UNPKG

react-native-segmented-round-display

Version:

react-native-segmented-round-display provides a simple ARC component, drawn with react-native-svg, it can have one or more segments and its easy configurable.

38 lines (32 loc) 985 B
const polarToCartesian = (centerX, centerY, radius, angleInDegrees) => { var angleInRadians = ((angleInDegrees - 180) * Math.PI) / 180.0; return { x: centerX + radius * Math.cos(angleInRadians), y: centerY + radius * Math.sin(angleInRadians), }; }; const drawArc = (x, y, radius, startAngle, endAngle) => { var start = polarToCartesian(x, y, radius, endAngle); var end = polarToCartesian(x, y, radius, startAngle); var largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1'; var d = [ 'M', start.x, start.y, 'A', radius, radius, 0, largeArcFlag, 0, end.x, end.y, ].join(' '); return d; }; const scaleValue = (value, from, to) => { var scale = (to[1] - to[0]) / (from[1] - from[0]); var capped = Math.min(from[1], Math.max(from[0], value)) - from[0]; // eslint-disable-next-line no-bitwise return ~~(capped * scale + to[0]); };