{
import flare.vis.data.render.ArrowType;
import flare.vis.data.render.EdgeRenderer;
/**
* Visually represents a connection between two data elements. Examples
* include an edge in a graph structure or a line between points in a line
* chart. EdgeSprites maintain
source
and target
* properties for accessing the NodeSprites connected by this edge. By
* default, EdgeSprites are drawn using an
EdgeRenderer
.* EdgeSprites are typically managed by a
Data
object.*/
public class EdgeSprite extends DataSprite
{
// -- Properties ------------------------------------------------------
/** The x-coordinate for the first end point of this edge. */
public var x1:Number;
/** The y-coordinate for the first end point of this edge. */
public var y1:Number;
/** The x-coordinate for the second end point of this edge. */
public var x2:Number;
/** The y-coordinate for the second end point of this edge. */
public var y2:Number;
/** The first, or source, node upon which this edge is incident. */
public var source:NodeSprite;
/** The second, or target, node upon which this edge is incident. */
public var target:NodeSprite;
/** Flag indicating if this edge is directed (true) or undirected
* (false). */
public var directed:Boolean = false;
/** The type of arrow to be used on the edge. Default is Arrows.NONE */
public var arrowType:String = ArrowType.NONE;
/** The width of the arrow head. The default is -1, in which case the
* width is automatically determined based on the arrow height or
* the line width. */
public var arrowWidth:Number = -1;
/** The height of the arrow head. The default is -1, in which case the
* height is automatically determined based on the arrow width or
* the line width. */
public var arrowHeight:Number = -1;
// -- Methods ---------------------------------------------------------
/**
* Creates a new EdgeSprite.
* @param source the source node
* @param target the target node
* @param directed true for a directed edge, false for undirected
*/
public function EdgeSprite(source:NodeSprite=null,
target:NodeSprite=null, directed:Boolean=false)
{
this.source = source;
this.target = target;
this.directed = directed;
_lineColor = 0xffcccccc;
_renderer = EdgeRenderer.instance;
}
/**
* Given a node upon which this edge is incident, return the other
* node connected by this edge.
* @param n a node upon which this edge is incident
* @return the other node
*/
public function other(n:NodeSprite):NodeSprite
{
if (n == source) return target;
if (n == target) return source;
else return null;
}
/**
* Clears the edge, removing references to the edge's nodes.
*/
public function clear():void
{
source = null;
target = null;
}
/** @inheritDoc */
public override function render():void
{
if (source != null) {
x1 = source.x;
y1 = source.y;
}
if (target != null) {
x2 = target.x;
y2 = target.y;
}
super.render();
}
} // end of class EdgeSprite
}
No comments:
Post a Comment