/
little.js
38 lines (33 loc) · 1.21 KB
/
little.js
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
34
35
36
37
import {psychedelia} from "./src/psychedelia.js";
import * as c from './src/constants.js'
const NUM_COLS = 0x28;
const NUM_ROWS = 0x18;
const SCALE_FACTOR = 1;
const DEMO_MODE = true;
const psys = littlePsychedelias(180);
function createCanvas() {
function updateCanvas(o, rgba, pixelXPos, pixelYPos) {
for (var i=0; i<4; i++) {
imageData.data[(o*4)+i] = rgba[i];
}
ctx.putImageData(imageData,0,0, pixelXPos, pixelYPos, 2, 2 );
}
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = NUM_COLS * SCALE_FACTOR;
canvas.height = NUM_ROWS * SCALE_FACTOR;
const imgData = new Uint8ClampedArray(new Array(NUM_COLS * SCALE_FACTOR * NUM_ROWS * SCALE_FACTOR)
.fill(0).map(x => c.RGBs[x]).flat());
let imageData = new ImageData(imgData, NUM_COLS * SCALE_FACTOR, NUM_ROWS * SCALE_FACTOR);
ctx.putImageData(imageData,0,0);
return {canvas: canvas, updateCanvas: updateCanvas};
}
function littlePsychedelias(num) {
const psys = [];
for (var i=0; i<num; i++) {
let c = createCanvas();
psys.push(psychedelia(NUM_COLS, NUM_ROWS, SCALE_FACTOR, c.updateCanvas, DEMO_MODE));
setTimeout(() => {container.appendChild(c.canvas)}, 1000);
}
return psys;
}