plotly.js
Version:
The open source javascript graphing library that powers plotly
42 lines (34 loc) • 1.14 kB
JavaScript
'use strict';
module.exports = function makeClipPath(xctrl, yctrl, aax, bax) {
var i, x, y;
var segments = [];
var asmoothing = !!aax.smoothing;
var bsmoothing = !!bax.smoothing;
var nea1 = xctrl[0].length - 1;
var neb1 = xctrl.length - 1;
// Along the lower a axis:
for(i = 0, x = [], y = []; i <= nea1; i++) {
x[i] = xctrl[0][i];
y[i] = yctrl[0][i];
}
segments.push({x: x, y: y, bicubic: asmoothing});
// Along the upper b axis:
for(i = 0, x = [], y = []; i <= neb1; i++) {
x[i] = xctrl[i][nea1];
y[i] = yctrl[i][nea1];
}
segments.push({x: x, y: y, bicubic: bsmoothing});
// Backwards along the upper a axis:
for(i = nea1, x = [], y = []; i >= 0; i--) {
x[nea1 - i] = xctrl[neb1][i];
y[nea1 - i] = yctrl[neb1][i];
}
segments.push({x: x, y: y, bicubic: asmoothing});
// Backwards along the lower b axis:
for(i = neb1, x = [], y = []; i >= 0; i--) {
x[neb1 - i] = xctrl[i][0];
y[neb1 - i] = yctrl[i][0];
}
segments.push({x: x, y: y, bicubic: bsmoothing});
return segments;
};