Spaces:
Sleeping
Sleeping
| import "../core/functor"; | |
| import "../core/source"; | |
| import "../core/target"; | |
| import "svg"; | |
| d3.svg.diagonal = function() { | |
| var source = d3_source, | |
| target = d3_target, | |
| projection = d3_svg_diagonalProjection; | |
| function diagonal(d, i) { | |
| var p0 = source.call(this, d, i), | |
| p3 = target.call(this, d, i), | |
| m = (p0.y + p3.y) / 2, | |
| p = [p0, {x: p0.x, y: m}, {x: p3.x, y: m}, p3]; | |
| p = p.map(projection); | |
| return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; | |
| } | |
| diagonal.source = function(x) { | |
| if (!arguments.length) return source; | |
| source = d3_functor(x); | |
| return diagonal; | |
| }; | |
| diagonal.target = function(x) { | |
| if (!arguments.length) return target; | |
| target = d3_functor(x); | |
| return diagonal; | |
| }; | |
| diagonal.projection = function(x) { | |
| if (!arguments.length) return projection; | |
| projection = x; | |
| return diagonal; | |
| }; | |
| return diagonal; | |
| }; | |
| function d3_svg_diagonalProjection(d) { | |
| return [d.x, d.y]; | |
| } | |