UNPKG

plotly.js

Version:

The open source javascript graphing library that powers plotly

84 lines (67 loc) 2.31 kB
'use strict'; // Wrapper functions to handle paper-referenced shapes, which have no axis function d2l(v, axis) { return axis ? axis.d2l(v) : v; } function l2d(v, axis) { return axis ? axis.l2d(v) : v; } function x0Fn(shape) { return shape.x0; } function x1Fn(shape) { return shape.x1; } function y0Fn(shape) { return shape.y0; } function y1Fn(shape) { return shape.y1; } function x0shiftFn(shape) { return shape.x0shift || 0; } function x1shiftFn(shape) { return shape.x1shift || 0; } function y0shiftFn(shape) { return shape.y0shift || 0; } function y1shiftFn(shape) { return shape.y1shift || 0; } function dxFn(shape, xa) { return d2l(shape.x1, xa) + x1shiftFn(shape) - d2l(shape.x0, xa) - x0shiftFn(shape); } function dyFn(shape, xa, ya) { return d2l(shape.y1, ya) + y1shiftFn(shape) - d2l(shape.y0, ya) - y0shiftFn(shape); } function widthFn(shape, xa) { return Math.abs(dxFn(shape, xa)); } function heightFn(shape, xa, ya) { return Math.abs(dyFn(shape, xa, ya)); } function lengthFn(shape, xa, ya) { return (shape.type !== 'line') ? undefined : Math.sqrt( Math.pow(dxFn(shape, xa), 2) + Math.pow(dyFn(shape, xa, ya), 2) ); } function xcenterFn(shape, xa) { return l2d((d2l(shape.x1, xa) + x1shiftFn(shape) + d2l(shape.x0, xa) + x0shiftFn(shape)) / 2, xa); } function ycenterFn(shape, xa, ya) { return l2d((d2l(shape.y1, ya) + y1shiftFn(shape) + d2l(shape.y0, ya) + y0shiftFn(shape)) / 2, ya); } function slopeFn(shape, xa, ya) { return (shape.type !== 'line') ? undefined : ( dyFn(shape, xa, ya) / dxFn(shape, xa) ); } // Variables valid for multi-axis shape references (xref/yref as arrays). // When a shape spans multiple axes, only these variables can be computed // because other variables require single-axis calculations. var simpleXVariables = ['x0', 'x1', 'y0', 'y1', 'dy', 'height', 'ycenter']; var simpleYVariables = ['x0', 'x1', 'y0', 'y1', 'dx', 'width', 'xcenter']; module.exports = { x0: x0Fn, x1: x1Fn, y0: y0Fn, y1: y1Fn, slope: slopeFn, dx: dxFn, dy: dyFn, width: widthFn, height: heightFn, length: lengthFn, xcenter: xcenterFn, ycenter: ycenterFn, simpleXVariables: simpleXVariables, simpleYVariables: simpleYVariables, };