1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- ;(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();
- };
- })();
|