Graph database Analysis of the Steam Network
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

77 lines
2.4 KiB

;(function() {
'use strict';
sigma.utils.pkg('sigma.canvas.edgehovers');
/**
* This hover renderer will display the edge with a different color or size.
*
* @param {object} edge The edge object.
* @param {object} source node The edge source node.
* @param {object} target node The edge target node.
* @param {CanvasRenderingContext2D} context The canvas context.
* @param {configurable} settings The settings function.
*/
sigma.canvas.edgehovers.parallel =
function(edge, source, target, context, settings) {
var color = edge.active ?
edge.active_color || settings('defaultEdgeActiveColor') :
edge.color,
prefix = settings('prefix') || '',
size = edge[prefix + 'size'] || 1,
edgeColor = settings('edgeColor'),
defaultNodeColor = settings('defaultNodeColor'),
defaultEdgeColor = settings('defaultEdgeColor'),
sX = source[prefix + 'x'],
sY = source[prefix + 'y'],
tX = target[prefix + 'x'],
tY = target[prefix + 'y'],
c,
d,
dist = sigma.utils.getDistance(sX, sY, tX, tY);
if (!color)
switch (edgeColor) {
case 'source':
color = source.color || defaultNodeColor;
break;
case 'target':
color = target.color || defaultNodeColor;
break;
default:
color = defaultEdgeColor;
break;
}
if (settings('edgeHoverColor') === 'edge') {
color = edge.hover_color || color;
} else {
color = edge.hover_color || settings('defaultEdgeHoverColor') || color;
}
size *= settings('edgeHoverSizeRatio');
// Intersection points of the source node circle:
c = sigma.utils.getCircleIntersection(sX, sY, size, tX, tY, dist);
// Intersection points of the target node circle:
d = sigma.utils.getCircleIntersection(tX, tY, size, sX, sY, dist);
context.save();
context.strokeStyle = color;
context.lineWidth = size;
context.beginPath();
context.moveTo(c.xi, c.yi);
context.lineTo(d.xi_prime, d.yi_prime);
context.closePath();
context.stroke();
context.beginPath();
context.moveTo(c.xi_prime, c.yi_prime);
context.lineTo(d.xi, d.yi);
context.closePath();
context.stroke();
context.restore();
};
})();