<divid=Content><divclass="CClass"><divclass=CTopicid=MainTopic><h1class=CTitle><aname="mxCompactTreeLayout"></a>mxCompactTreeLayout</h1><divclass=CBody><p>Extends <ahref="mxGraphLayout-js.html#mxGraphLayout"class=LClassid=link61onMouseOver="ShowTip(event, 'tt1', 'link61')"onMouseOut="HideTip('tt1')">mxGraphLayout</a> to implement a compact tree (Moen) algorithm. This layout is suitable for graphs that have no cycles (trees). Vertices that are not connected to the tree will be ignored by this layout.</p><h4class=CHeading>Example</h4><blockquote><preclass="prettyprint">var layout = new mxCompactTreeLayout(graph);
layout.execute(graph.getDefaultParent());</pre></blockquote><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SMain"><tdclass=SEntry><ahref="#mxCompactTreeLayout">mxCompactTreeLayout</a></td><tdclass=SDescription>Extends <ahref="mxGraphLayout-js.html#mxGraphLayout"class=LClassid=link1onMouseOver="ShowTip(event, 'tt1', 'link1')"onMouseOut="HideTip('tt1')">mxGraphLayout</a> to implement a compact tree (Moen) algorithm. </td></tr><trclass="SGroup SIndent1"><tdclass=SEntry><ahref="#mxCompactTreeLayout.Functions">Functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.mxCompactTreeLayout"id=link2onMouseOver="ShowTip(event, 'tt2', 'link2')"onMouseOut="HideTip('tt2')">mxCompactTreeLayout</a></td><tdclass=SDescription>Constructs a new compact tree layout for the specified graph and orientation.</td></tr><trclass="SGroup SIndent1"><tdclass=SEntry><ahref="#mxCompactTreeLayout.Variables">Variables</a></td><tdclass=SDescription></td></tr><trclass="SVariable SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.horizontal"id=link3onMouseOver="ShowTip(event, 'tt3', 'link3')"onMouseOut="HideTip('tt3')">horizontal</a></td><tdclass=SDescription>Specifies the orientation of the layout. </td></tr><trclass="SVariable SIndent2"><tdclass=SEntry><ahref="#mxCompactTreeLayout.invert"id=link4onMouseOver="ShowTip(event, 'tt4', 'link4')"onMouseOut="HideTip('tt4')">invert</a></td><tdclass=SDescription>Specifies if edge directions should be inverted. </td></tr><trclass="SVariable SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.resizeParent"id=link5onMouseOver="ShowTip(event, 'tt5', 'link5')"onMouseOut="HideTip('tt5')">resizeParent</a></td><tdclass=SDescription>If the parents should be resized to match the width/height of the children. </td></tr><trclass="SVariable SIndent2"><tdclass=SEntry><ahref="#mxCompactTreeLayout.maintainParentLocation"id=link6onMouseOver="ShowTip(event, 'tt6', 'link6')"onMouseOut="HideTip('tt6')">maintainParentLocation</a></td><tdclass=SDescription>Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout. </td></tr><trclass="SVariable SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.groupPadding"id=link7onMouseOver="ShowTip(event, 'tt7', 'link7')"onMouseOut="HideTip('tt7')">groupPadding</a></td><tdclass=SDescription>Padding added to resized parents. </td></tr><trclass="SVariable SIndent2"><tdclass=SEntry><ahref="#mxCompactTreeLayout.groupPaddingTop"id=link8onMouseOver="ShowTip(event, 'tt8', 'link8')"onMouseOut="HideTip('tt8')">groupPaddingTop</a></td><tdclass=SDescription>Top padding added to resized parents. </td></tr><trclass="SVariable SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.groupPaddingRight"id=link9onMouseOver="ShowTip(event, 'tt9', 'link9')"onMouseOut="HideTip('tt9')">groupPaddingRight</a></td><tdclass=SDescription>Right padding added to resized parents. </td></tr><trclass="SVariable SIndent2"><tdclass=SEntry><ahref="#mxCompactTreeLayout.groupPaddingBottom"id=link10onMouseOver="ShowTip(event, 'tt10', 'link10')"onMouseOut="HideTip('tt10')">groupPaddingBottom</a></td><tdclass=SDescription>Bottom padding added to resized parents. </td></tr><trclass="SVariable SIndent2 SMarked"><tdclass=SEntry><ahref="#mxCompactTreeLayout.groupPaddingLeft"id=link11onMouseOver="ShowTip(event, 'tt11', 'link11')"onMouseOut="HideTip('tt11')">groupPaddingLeft</a></td><tdclass=SDescription>Left padding added to resized parents. </td></tr><trclass="SVariable SIndent2"><tdclass=SEntry><ahref="#mxCompactTreeLayout.parentsChanged"id=link12onMouseOver="ShowTip(event, 'tt12', 'link12')"onMouseOut="HideTip('tt12')">parentsChanged</a></td><tdclass=SDescription>A set of the parents that need updating based on children process as part of
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.mxCompactTreeLayout"></a>mxCompactTreeLayout</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>function mxCompactTreeLayout(</td><tdclass=PParameternowrap>graph,</td></tr><tr><td></td><tdclass=PParameternowrap>horizontal,</td></tr><tr><td></td><tdclass=PParameternowrap>invert</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Constructs a new compact tree layout for the specified graph and orientation.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.horizontal"></a>horizontal</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.horizontal</td></tr></table></blockquote><p>Specifies the orientation of the layout. Default is true.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.invert"></a>invert</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.invert</td></tr></table></blockquote><p>Specifies if edge directions should be inverted. Default is false.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.resizeParent"></a>resizeParent</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.resizeParent</td></tr></table></blockquote><p>If the parents should be resized to match the width/height of the children. Default is true.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.maintainParentLocation"></a>maintainParentLocation</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.maintainParentLocation</td></tr></table></blockquote><p>Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout. Default is false for backwards compatibility.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.groupPadding"></a>groupPadding</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPadding</td></tr></table></blockquote><p>Padding added to resized parents. Default is 10.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.groupPaddingTop"></a>groupPaddingTop</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingTop</td></tr></table></blockquote><p>Top padding added to resized parents. Default is 0.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.groupPaddingRight"></a>groupPaddingRight</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingRight</td></tr></table></blockquote><p>Right padding added to resized parents. Default is 0.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.groupPaddingBottom"></a>groupPaddingBottom</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingBottom</td></tr></table></blockquote><p>Bottom padding added to resized parents. Default is 0.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.groupPaddingLeft"></a>groupPaddingLeft</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingLeft</td></tr></table></blockquote><p>Left padding added to resized parents. Default is 0.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.parentsChanged"></a>parentsChanged</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.parentsChanged</td></tr></table></blockquote><p>A set of the parents that need updating based on children process as part of the layout.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.moveTree"></a>moveTree</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.moveTree</td></tr></table></blockquote><p>Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer. Default is false.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.visited"></a>visited</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.visited</td></tr></table></blockquote><p>Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer. Default is false.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.levelDistance"></a>levelDistance</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.levelDistance</td></tr></table></blockquote><p>Holds the levelDistance. Default is 10.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.nodeDistance"></a>nodeDistance</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.nodeDistance</td></tr></table></blockquote><p>Holds the nodeDistance. Default is 20.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.resetEdges"></a>resetEdges</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.resetEdges</td></tr></table></blockquote><p>Specifies if all edge points of traversed edges should be removed. Default is true.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.prefHozEdgeSep"></a>prefHozEdgeSep</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.prefHozEdgeSep</td></tr></table></blockquote><p>The preferred horizontal distance between edges exiting a vertex.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.prefVertEdgeOff"></a>prefVertEdgeOff</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.prefVertEdgeOff</td></tr></table></blockquote><p>The preferred vertical offset between edges exiting a vertex.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.minEdgeJetty"></a>minEdgeJetty</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.minEdgeJetty</td></tr></table></blockquote><p>The minimum distance for an edge jetty from a vertex.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.channelBuffer"></a>channelBuffer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.channelBuffer</td></tr></table></blockquote><p>The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.edgeRouting"></a>edgeRouting</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.edgeRouting</td></tr></table></blockquote><p>Whether or not to apply the internal tree edge routing.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.sortEdges"></a>sortEdges</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.sortEdges</td></tr></table></blockquote><p>Specifies if edges should be sorted according to the order of their opposite terminal cell in the model.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.alignRanks"></a>alignRanks</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.alignRanks</td></tr></table></blockquote><p>Whether or not the tops of cells in each rank should be aligned across the rank</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.maxRankHeight"></a>maxRankHeight</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.maxRankHeight</td></tr></table></blockquote><p>An array of the maximum height of cells (relative to the layout direction) per rank</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.root"></a>root</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.root</td></tr></table></blockquote><p>The cell to use as the root of the tree</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.node"></a>node</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.node</td></tr></table></blockquote><p>The internal node representation of the root cell. Do not set directly , this value is only exposed to assist with post-processing functionality</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.isVertexIgnored"></a>isVertexIgnored</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.isVertexIgnored = function(</td><tdclass=PParameternowrap>vertex</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns a boolean indicating if the given <ahref="../model/mxCell-js.html#mxCell"class=LClassid=link62onMouseOver="ShowTip(event, 'tt29', 'link62')"onMouseOut="HideTip('tt29')">mxCell</a> should be ignored as a vertex. This returns true if the cell has no connections.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>vertex</td><tdclass=CDLDescription><ahref="../model/mxCell-js.html#mxCell"class=LClassid=link63onMouseOver="ShowTip(event, 'tt29', 'link63')"onMouseOut="HideTip('tt29')">mxCell</a> whose ignored state should be returned.</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.execute"></a>execute</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.execute = function(</td><tdclass=PParameternowrap>parent,</td></tr><tr><td></td><tdclass=PParameternowrap>root</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Implements <ahref="mxGraphLayout-js.html#mxGraphLayout.execute"class=LFunctionid=link65onMouseOver="ShowTip(event, 'tt32', 'link65')"onMouseOut="HideTip('tt32')">mxGraphLayout.execute</a>.</p><p>If the parent has any connected edges, then it is used as the root of the tree. Else, <ahref="../view/mxGraph-js.html#mxGraph.findTreeRoots"class=LFunctionid=link66onMouseOver="ShowTip(event, 'tt59', 'link66')"onMouseOut="HideTip('tt59')">mxGraph.findTreeRoots</a> will be used to find a suitable root node within the set of children of the given parent.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>parent</td><tdclass=CDLDescription><ahref="../model/mxCell-js.html#mxCell"class=LClassid=link67onMouseOver="ShowTip(event, 'tt29', 'link67')"onMouseOut="HideTip('tt29')">mxCell</a> whose children should be laid out.</td></tr><tr><tdclass=CDLEntry>root</td><tdclass=CDLDescription>Optional <ahref="../model/mxCell-js.html#mxCell"class=LClassid=link68onMouseOver="ShowTip(event, 'tt29', 'link68')"onMouseOut="HideTip('tt29')">mxCell</a> that will be used as the root of the tree. Overrides <ahref="#mxCompactTreeLayout.root"class=LVariableid=link69onMouseOver="ShowTip(event, 'tt26', 'link69')"onMouseOut="HideTip('tt26')">root</a> if specified.</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.moveNode"></a>moveNode</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.moveNode = function(</td><tdclass=PParameternowrap>node,</td></tr><tr><td></td><tdclass=PParameternowrap>dx,</td></tr><tr><td></td><tdclass=PParameternowrap>dy</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Moves the specified node and all of its children by the given amount.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.sortOutgoingEdges"></a>sortOutgoingEdges</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.sortOutgoingEdges = function(</td><tdclass=PParameternowrap>source,</td></tr><tr><td></td><tdclass=PParameternowrap>edges</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Called if <ahref="#mxCompactTreeLayout.sortEdges"class=LVariableid=link70onMouseOver="ShowTip(event, 'tt23', 'link70')"onMouseOut="HideTip('tt23')">sortEdges</a> is true to sort the array of outgoing edges in place.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.findRankHeights"></a>findRankHeights</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.findRankHeights = function(</td><tdclass=PParameternowrap>node,</td></tr><tr><td></td><tdclass=PParameternowrap>rank</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Stores the maximum height (relative to the layout direction) of cells in each rank</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.setCellHeights"></a>setCellHeights</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.setCellHeights = function(</td><tdclass=PParameternowrap>node,</td></tr><tr><td></td><tdclass=PParameternowrap>rank</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Set the cells heights (relative to the layout direction) when the tops of each rank are to be aligned</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.dfs"></a>dfs</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.dfs = function(</td><tdclass=PParameternowrap>cell,</td></tr><tr><td></td><tdclass=PParameternowrap>parent</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Does a depth first search starting at the specified cell. Makes sure the specified parent is never left by the algorithm.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.layout"></a>layout</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.layout = function(</td><tdclass=PParameternowrap>node</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Starts the actual compact tree layout algorithm at the given node.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.adjustParents"></a>adjustParents</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.adjustParents = function()</td></tr></table></blockquote><p>Adjust parent cells whose child geometries have changed. The default implementation adjusts the group to just fit around the children with a padding.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.localEdgeProcessing"></a>localEdgeProcessing</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>mxCompactTreeLayout.prototype.localEdgeProcessing = function(</td><tdclass=PParameternowrap>node</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Moves the specified node and all of its children by the given amount.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="mxCompactTreeLayout.localEdgeProcessing"></a>localEdgeProcessing</h3><divclass=CBody><p>Separates the x position of edges as they connect to vertices</p></div></div></div>
<divclass="CClass"><divclass=CTopic><h2class=CTitle><aname="WeightedCellSorter"></a>WeightedCellSorter</h2><divclass=CBody><p>A utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges. Does not violate (x.compareTo(y)==0) == (x.equals(y))</p><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SGroup"><tdclass=SEntry><ahref="#WeightedCellSorter.Functions">Functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#WeightedCellSorter.WeightedCellSorter"id=link71onMouseOver="ShowTip(event, 'tt52', 'link71')"onMouseOut="HideTip('tt52')">WeightedCellSorter</a></td><tdclass=SDescription>Constructs a new weighted cell sorted for the given cell and weight.</td></tr><trclass="SGroup"><tdclass=SEntry><ahref="#WeightedCellSorter.Variables">Variables</a></td><tdclass=SDescription></td></tr><trclass="SVariable SIndent1 SMarked"><tdclass=SEntry><ahref="#WeightedCellSorter.weightedValue"id=link72onMouseOver="ShowTip(event, 'tt53', 'link72')"onMouseOut="HideTip('tt53')">weightedValue</a></td><tdclass=SDescription>The weighted value of the cell stored.</td></tr><trclass="SVariable SIndent1"><tdclass=SEntry><ahref="#WeightedCellSorter.nudge"id=link73onMouseOver="ShowTip(event, 'tt54', 'link73')"onMouseOut="HideTip('tt54')">nudge</a></td><tdclass=SDescription>Whether or not to flip equal weight values.</td></tr><trclass="SVariable SIndent1 SMarked"><tdclass=SEntry><ahref="#WeightedCellSorter.visited"id=link74onMouseOver="ShowTip(event, 'tt55', 'link74')"onMouseOut="HideTip('tt55')">visited</a></td><tdclass=SDescription>Whether or not this cell has been visited in the current assignment.</td></tr><trclass="SVariable SIndent1"><tdclass=SEntry><ahref="#WeightedCellSorter.rankIndex"id=link75onMouseOver="ShowTip(event, 'tt56', 'link75')"onMouseOut="HideTip('tt56')">rankIndex</a></td><tdclass=SDescription>The index this cell is in the model rank.</td></tr><trclass="SVariable SIndent1 SMarked"><tdclass=SEntry><ahref="#WeightedCellSorter.cell"id=link76onMouseOver="ShowTip(event, 'tt57', 'link76')"onMouseOut="HideTip('tt57')">cell</a></td><tdclass=SDescription>The cell whose median value is being calculated.</td></tr><trclass="SGroup"><tdclass=SEntry><ahref="#WeightedCellSorter.Functions">Functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#WeightedCellSorter.compare"id=link77onMouseOver="ShowTip(event, 'tt58', 'link77')"onMouseOut="HideTip('tt58')">compare</a></td><tdclass=SDescription>Compares two WeightedCellSorters.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.WeightedCellSorter"></a>WeightedCellSorter</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>function WeightedCellSorter(</td><tdclass=PParameternowrap>cell,</td></tr><tr><td></td><tdclass=PParameternowrap>weightedValue</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Constructs a new weighted cell sorted for the given cell and weight.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.weightedValue"></a>weightedValue</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>WeightedCellSorter.prototype.weightedValue</td></tr></table></blockquote><p>The weighted value of the cell stored.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.nudge"></a>nudge</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>WeightedCellSorter.prototype.nudge</td></tr></table></blockquote><p>Whether or not to flip equal weight values.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.visited"></a>visited</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>WeightedCellSorter.prototype.visited</td></tr></table></blockquote><p>Whether or not this cell has been visited in the current assignment.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.rankIndex"></a>rankIndex</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>WeightedCellSorter.prototype.rankIndex</td></tr></table></blockquote><p>The index this cell is in the model rank.</p></div></div></div>
<divclass="CVariable"><divclass=CTopic><h3class=CTitle><aname="WeightedCellSorter.cell"></a>cell</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>WeightedCellSorter.prototype.cell</td></tr></table></blockquote><p>The cell whose median value is being calculated.</p></div></div></div>
<divclass=CToolTipid="tt1"><divclass=CClass>Base class for all layout algorithms in mxGraph. </div></div><divclass=CToolTipid="tt2"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>function mxCompactTreeLayout(</td><tdclass=PParameternowrap>graph,</td></tr><tr><td></td><tdclass=PParameternowrap>horizontal,</td></tr><tr><td></td><tdclass=PParameternowrap>invert</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Constructs a new compact tree layout for the specified graph and orientation.</div></div><divclass=CToolTipid="tt3"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.horizontal</td></tr></table></blockquote>Specifies the orientation of the layout. </div></div><divclass=CToolTipid="tt4"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.invert</td></tr></table></blockquote>Specifies if edge directions should be inverted. </div></div><divclass=CToolTipid="tt5"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.resizeParent</td></tr></table></blockquote>If the parents should be resized to match the width/height of the children. </div></div><divclass=CToolTipid="tt6"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.maintainParentLocation</td></tr></table></blockquote>Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout. </div></div><divclass=CToolTipid="tt7"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPadding</td></tr></table></blockquote>Padding added to resized parents. </div></div><divclass=CToolTipid="tt8"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingTop</td></tr></table></blockquote>Top padding added to resized parents. </div></div><divclass=CToolTipid="tt9"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingRight</td></tr></table></blockquote>Right padding added to resized parents. </div></div><divclass=CToolTipid="tt10"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingBottom</td></tr></table></blockquote>Bottom padding added to resized parents. </div></div><divclass=CToolTipid="tt11"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.groupPaddingLeft</td></tr></table></blockquote>Left padding added to resized parents. </div></div><divclass=CToolTipid="tt12"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.parentsChanged</td></tr></table></blockquote>A set of the parents that need updating based on children process as part of the layout.</div></div><divclass=CToolTipid="tt13"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.prototype.moveTree</td></tr></table></blockquote>Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer. </div></div><divclass=CToolTipid="tt14"><divclass=CVariable><blockquote><tableborder=0cellspacing=0cellpadding=0class="Prototype prettyprint"><tr><td>mxCompactTreeLayout.proto