text: ;(function() {
    'use strict';
  
    sigma.utils.pkg('sigma.canvas.edges');
  
    /**
     * This method renders the edge as two parallel lines.
     *
     * @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.edges.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;
        }
  
      // 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();
  
      if (edge.active) {
        context.strokeStyle = settings('edgeActiveColor') === 'edge' ?
          (color || defaultEdgeColor) :
          settings('defaultEdgeActiveColor');
      }
      else {
        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();
    };
  })();
  