Skip to content

Commit afccf65

Browse files
committed
Improve accuracy of waveform rendering
1 parent c215104 commit afccf65

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

src/components/waveform/waveform.jsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,18 @@ class Waveform extends React.PureComponent {
2222
const filteredData = takeEveryN === 1 ? data.slice(0) :
2323
data.filter((_, i) => i % takeEveryN === 0);
2424

25-
filteredData[0] = 0;
26-
filteredData[filteredData.length - 1] = 0;
25+
// Need at least two points to render waveform.
26+
if (filteredData.length === 1) {
27+
filteredData.push(filteredData[0]);
28+
}
2729

30+
const maxIndex = filteredData.length - 1;
2831
const points = [
2932
...filteredData.map((v, i) =>
30-
[width * i / filteredData.length, height * v / 2]
33+
[width * (i / maxIndex), height * v / 2]
3134
),
3235
...filteredData.reverse().map((v, i) =>
33-
[width * (filteredData.length - i - 1) / filteredData.length, -height * v / 2]
36+
[width * (1 - (i / maxIndex)), -height * v / 2]
3437
)
3538
];
3639
const pathComponents = points.map(([x, y], i) => {
@@ -41,15 +44,8 @@ class Waveform extends React.PureComponent {
4144
return (
4245
<svg
4346
className={styles.container}
44-
viewBox={`-1 0 ${width} ${height}`}
47+
viewBox={`0 0 ${width} ${height}`}
4548
>
46-
<line
47-
className={styles.baseline}
48-
x1={-1}
49-
x2={width}
50-
y1={height / 2}
51-
y2={height / 2}
52-
/>
5349
<g transform={`scale(1, -1) translate(0, -${height / 2})`}>
5450
<path
5551
className={styles.waveformPath}

0 commit comments

Comments
 (0)