From afccf651579be5226c91c3ebae75305e6d2dc0a8 Mon Sep 17 00:00:00 2001 From: Eric Rosenbaum <eric.rosenbaum@gmail.com> Date: Thu, 25 Jul 2019 15:10:13 -0400 Subject: [PATCH] Improve accuracy of waveform rendering --- src/components/waveform/waveform.jsx | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/components/waveform/waveform.jsx b/src/components/waveform/waveform.jsx index 31b777aa7..3c7b4d26b 100644 --- a/src/components/waveform/waveform.jsx +++ b/src/components/waveform/waveform.jsx @@ -22,15 +22,18 @@ class Waveform extends React.PureComponent { const filteredData = takeEveryN === 1 ? data.slice(0) : data.filter((_, i) => i % takeEveryN === 0); - filteredData[0] = 0; - filteredData[filteredData.length - 1] = 0; + // Need at least two points to render waveform. + if (filteredData.length === 1) { + filteredData.push(filteredData[0]); + } + const maxIndex = filteredData.length - 1; const points = [ ...filteredData.map((v, i) => - [width * i / filteredData.length, height * v / 2] + [width * (i / maxIndex), height * v / 2] ), ...filteredData.reverse().map((v, i) => - [width * (filteredData.length - i - 1) / filteredData.length, -height * v / 2] + [width * (1 - (i / maxIndex)), -height * v / 2] ) ]; const pathComponents = points.map(([x, y], i) => { @@ -41,15 +44,8 @@ class Waveform extends React.PureComponent { return ( <svg className={styles.container} - viewBox={`-1 0 ${width} ${height}`} + viewBox={`0 0 ${width} ${height}`} > - <line - className={styles.baseline} - x1={-1} - x2={width} - y1={height / 2} - y2={height / 2} - /> <g transform={`scale(1, -1) translate(0, -${height / 2})`}> <path className={styles.waveformPath} -- GitLab