
Search this API  
PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object y.layout.hierarchic.WeightedLayerer
public class WeightedLayerer
This class implements the layering phase of the IncrementalHierarchicLayouter
(i.e., the assignment of the nodes to layers).
It first makes the directed graph acyclic. Then, it assigns the layers such that edge weights are respected. A weight defines a minimum distance between the two end points of an edge.
IncrementalHierarchicLayouter
as well as HierarchicLayouter
and
HierarchicGroupLayouter
.Field Summary  

protected java.lang.Object 
key
The key to access the DataProvider that holds the edge weights. 
protected DataProvider 
weight
This is a DataProvider that holds for each Edge an integer value representing its weight. 
Constructor Summary  

WeightedLayerer()
Creates an instance of WeightedLayerer with default settings. 

WeightedLayerer(java.lang.Object key)
Creates an instance of WeightedLayerer with the given key that provides access to the DataProvider
that holds the edge weights and unlimited maximum duration for the WeightedLayerer . 
Method Summary  

int 
assignLayers(Graph graph,
NodeMap layerID)
Assigns all nodes of the graph to layers. 
void 
assignLayers(LayoutGraph graph,
Layers layers,
LayoutDataProvider ldp)
Assigns all nodes of the graph to layers and adds them to the Layers instance. 
int 
assignLayersFast(Graph graph,
NodeMap layerID)
Assigns all nodes of the graph to layers. 
int 
assignNodeLayer(Graph graph,
NodeMap layerID,
EdgeList reversedEdges,
DataProvider weight)
Deprecated. Use assignNodeLayer(y.layout.LayoutGraph, y.base.NodeMap, y.base.EdgeList, y.base.DataProvider)
instead.
This method does not support graphs that have several disjoint graph components nor the edge weight based cycle removal heuristic. 
int 
assignNodeLayer(LayoutGraph graph,
NodeMap layerID,
EdgeList reversedEdges)
Assigns all nodes of the graph to layers. 
int 
assignNodeLayer(LayoutGraph graph,
NodeMap layerID,
EdgeList reversedEdges,
DataProvider weight)
Assigns all nodes of the graph to layers. 
protected void 
downShiftNodes(Graph graph,
NodeMap layerID,
int maxLayer)
Deprecated. This method is not used any more. ?? The drawings seem to be nicer in this way. 
long 
getMaximalDuration()
Returns the time limit in milliseconds set for the layout algorithm. 
protected double 
getWeight(Edge edge)
Returns the edge weight of the given edge using the weight based cycle removal heuristic. 
boolean 
isWeightedCycleRemovalEnabled()
Returns whether or not the edges that need to be reversed are determined using an edge weight based heuristic or using a depth first search based approach. 
void 
makeDFSAcyclic(Graph graph,
EdgeList reversedEdges)
Removes cycles from the graph using a depth first search. 
void 
makeDFSAcyclic(LayoutGraph graph,
EdgeList reversedEdges)
Removes cycles from the graph using a depth first search. 
void 
setMaximalDuration(long maximalDuration)
Specifies the time limit in milliseconds set for the layout algorithm. 
void 
setWeightedCycleRemovalEnabled(boolean enabled)
Specifies whether or not the edges that need to be reversed are determined using an edge weight based heuristic or using a depth first search based approach. 
Methods inherited from class java.lang.Object 

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
Field Detail 

protected DataProvider weight
DataProvider
that holds for each Edge
an integer value representing its weight.
protected java.lang.Object key
DataProvider
that holds the edge weights.
More precisely, the corresponding DataProvider
maps each edge of the input graph
to an integer value representing the edge's weight.
Constructor Detail 

public WeightedLayerer()
WeightedLayerer
with default settings.
With this constructor, there exists no key to access the DataProvider
that holds the edge weights. This
means that the edges will be considered to have uniform weights of value 1.0
.
public WeightedLayerer(java.lang.Object key)
WeightedLayerer
with the given key that provides access to the DataProvider
that holds the edge weights and unlimited maximum duration for the WeightedLayerer
.
key
 the key to access the DataProvider
that holds the edge weightsMethod Detail 

public boolean isWeightedCycleRemovalEnabled()
The weight based approach may result in fewer reversed edges (especially for cases with many multiedges) whereas the DFS based approach is likely to be faster.
true
if an edge weight based heuristic is used; false
if a DFS based
approach is usedsetWeightedCycleRemovalEnabled(boolean)
,
isWeightedCycleRemovalEnabled()
public void setWeightedCycleRemovalEnabled(boolean enabled)
The weight based approach may result in fewer reversed edges (especially for cases with many multiedges) whereas the DFS based approach is likely to be faster.
enabled
 true
if an edge weight based heuristic is used; false
if a DFS based
approach is usedisWeightedCycleRemovalEnabled()
public long getMaximalDuration()
Values have to be greater than or equal to 0
.
setMaximalDuration(long)
public void setMaximalDuration(long maximalDuration)
Values have to be greater than or equal to 0
.
Long.MAX_VALUE
. The layout algorithm runs unrestricted.maximalDuration
 a nonnegative value that specifies the time limit
java.lang.IllegalArgumentException
 if the maximum duration is negativepublic int assignNodeLayer(LayoutGraph graph, NodeMap layerID, EdgeList reversedEdges)
(v,w)
in E: layer(v) < layer(w)
graph
 the graph for which the layers are determinedlayerID
 the NodeMap
that will be filled by the layout algorithm and returns the zerobased index
of the layer to which each node belongsreversedEdges
 an EdgeList
containing the edges which had been reversed
public int assignNodeLayer(LayoutGraph graph, NodeMap layerID, EdgeList reversedEdges, DataProvider weight)
(v,w)
in E: layer(v) < layer(w)
graph
 the graph for which the layers are determinedlayerID
 the NodeMap
that will be filled by the layout algorithm and returns a zerobased layer
index for each nodereversedEdges
 an EdgeList
containing the edges which had been reversedweight
 the DataProvider
that returns an integer value (weight) for each edge
protected double getWeight(Edge edge)
By default, all edges are considered to have weight 1.0
.
It may be overridden if nonuniform weights are desired.
edge
 given edge
isWeightedCycleRemovalEnabled()
,
setWeightedCycleRemovalEnabled(boolean)
public int assignNodeLayer(Graph graph, NodeMap layerID, EdgeList reversedEdges, DataProvider weight)
assignNodeLayer(y.layout.LayoutGraph, y.base.NodeMap, y.base.EdgeList, y.base.DataProvider)
instead.
This method does not support graphs that have several disjoint graph components nor the edge weight based cycle removal heuristic.
(v,w)
in E: layer(v) < layer(w)
graph
 the graph for which the layers are determinedlayerID
 the NodeMap
that will be filled by the layout algorithm and returns the zerobased index
of the layer to which each node belongsreversedEdges
 an EdgeList
containing the edges which had been reversedweight
 the DataProvider
that returns an integer value (weight) for each edge
public void makeDFSAcyclic(LayoutGraph graph, EdgeList reversedEdges)
graph
 the graphreversedEdges
 an EdgeList
containing the edges which will be reversedpublic void makeDFSAcyclic(Graph graph, EdgeList reversedEdges)
graph
 the graphreversedEdges
 an EdgeList
containing the edges which will be reversedpublic int assignLayers(Graph graph, NodeMap layerID)
(v,w)
in E: layer(v) < layer(w)
graph
 the graph for which the layers are determinedlayerID
 the NodeMap
that will be filled by the layout algorithm and returns the zerobased index
of the layer to which each node belongs
public int assignLayersFast(Graph graph, NodeMap layerID)
(v,w)
in E: layer(v) < layer(w)
graph
 the graph for which the layers are determinedlayerID
 the NodeMap
that will be filled by the layout algorithm and returns a zerobased layer index
for each node
protected void downShiftNodes(Graph graph, NodeMap layerID, int maxLayer)
The drawings seem to be nicer in this way.
graph
 the input graphlayerID
 the NodeMap
that returns the zerobased index of the layer to which each node belongsmaxLayer
 the number of layerspublic void assignLayers(LayoutGraph graph, Layers layers, LayoutDataProvider ldp)
Layers
instance.
assignLayers
in interface Layerer
graph
 the input graphlayers
 the Layers
instance that will be filled with the results of the calculationldp
 the LayoutDataProvider
used for querying information about the nodes and edgesLayers.insert(byte, int)
,
Layer.add(y.base.Node)

© Copyright 20002022, yWorks GmbH. All rights reserved. 

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 