summaryrefslogtreecommitdiff
path: root/client/lib/color.js
blob: 5f873b30a712e6ce2b32523f9dc23bc44758b765 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const palettes = [
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.00, 0.33, 0.67]],
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.00, 0.10, 0.20]],
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.30, 0.20, 0.20]],
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 0.5], [0.80, 0.90, 0.30]],
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 0.7, 0.4], [0.00, 0.15, 0.20]],
  [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [2.0, 1.0, 0.0], [0.50, 0.20, 0.25]],
  [[0.8, 0.5, 0.4], [0.2, 0.4, 0.2], [2.0, 1.0, 1.0], [0.00, 0.25, 0.25]],
]

let palette = palettes[0]

function channel (t, a, b, c, d, add, mul) {
  return a + b * Math.cos(2 * Math.PI * (c * t + d)) * mul + add
}

function color (t, add, mul, alpha) {
  add = add || 0
  mul = mul || 1
  let a, b, c, d
  const rgb = []
  for (var i = 0; i < 3; i++) {
    a = palette[0][i]
    b = palette[1][i]
    c = palette[2][i]
    d = palette[3][i]
    rgb[i] = Math.round(channel(t, a, b, c, d, add, mul) * 255)
  }
  return 'rgba(' + rgb + ',' + alpha + ')'
}

export default color