UNPKG

@loopmode/dis-gui

Version:

An extensible, styleable, & React-based controller library inspired by the venerable dat-gui.

39 lines (35 loc) 1.25 kB
export function updateCanvas(stops, canvas) { let ctx = canvas.getContext('2d'); for (var x = 0; x < canvas.width; x++) { let frac = x/(canvas.width - 1); let c = getValue(stops, frac); ctx.fillStyle = `rgb(${c.red}, ${c.green}, ${c.blue})`; ctx.fillRect(x, 0, 1, 1); } } export function random() { let count = Math.round(Math.random() * 8 + 16); let stops = []; for (let i = 0; i < count; i++) { let red = Math.round(Math.random() * 255); let green = Math.round(Math.random() * 255); let blue = Math.round(Math.random() * 255); let stop = i/(count - 1); stops.push({ red: red, green: green, blue: blue, stop: stop }); } return stops; } function getValue(stops, frac) { for (let i = 0; i < stops.length - 1; i++) { if (frac >= stops[i].stop && frac <= stops[i + 1].stop) { let left = stops[i]; let right = stops[i + 1]; let ifrac = (frac - left.stop)/(right.stop - left.stop); return { red: Math.round(left.red + ifrac * (right.red - left.red)), green: Math.round(left.green + ifrac * (right.green - left.green)), blue: Math.round(left.blue + ifrac * (right.blue - left.blue)), } } } }