sigma.canvas.edgehovers.def.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. ;(function() {
  2. 'use strict';
  3. sigma.utils.pkg('sigma.canvas.edgehovers');
  4. /**
  5. * This hover renderer will display the edge with a different color or size.
  6. *
  7. * @param {object} edge The edge object.
  8. * @param {object} source node The edge source node.
  9. * @param {object} target node The edge target node.
  10. * @param {CanvasRenderingContext2D} context The canvas context.
  11. * @param {configurable} settings The settings function.
  12. */
  13. sigma.canvas.edgehovers.def =
  14. function(edge, source, target, context, settings) {
  15. var color = edge.color,
  16. prefix = settings('prefix') || '',
  17. size = edge[prefix + 'size'] || 1,
  18. edgeColor = settings('edgeColor'),
  19. defaultNodeColor = settings('defaultNodeColor'),
  20. defaultEdgeColor = settings('defaultEdgeColor');
  21. if (!color)
  22. switch (edgeColor) {
  23. case 'source':
  24. color = source.color || defaultNodeColor;
  25. break;
  26. case 'target':
  27. color = target.color || defaultNodeColor;
  28. break;
  29. default:
  30. color = defaultEdgeColor;
  31. break;
  32. }
  33. if (settings('edgeHoverColor') === 'edge') {
  34. color = edge.hover_color || color;
  35. } else {
  36. color = edge.hover_color || settings('defaultEdgeHoverColor') || color;
  37. }
  38. size *= settings('edgeHoverSizeRatio');
  39. context.strokeStyle = color;
  40. context.lineWidth = size;
  41. context.beginPath();
  42. context.moveTo(
  43. source[prefix + 'x'],
  44. source[prefix + 'y']
  45. );
  46. context.lineTo(
  47. target[prefix + 'x'],
  48. target[prefix + 'y']
  49. );
  50. context.stroke();
  51. };
  52. })();