@thi.ng/webgl
Version:
WebGL & GLSL abstraction layer
33 lines (32 loc) • 908 B
JavaScript
import { canvasPixels } from "@thi.ng/pixel/canvas";
import { ARGB8888 } from "@thi.ng/pixel/format/argb8888";
const checkerboard = (opts) => {
opts = {
size: 16,
col1: 4294967295,
col2: 4278190080,
cornerCols: [4294901760, 4278255360, 4278190335, 4294967040],
...opts
};
const size = opts.size;
const col1 = ARGB8888.toABGR(opts.col1);
const col2 = ARGB8888.toABGR(opts.col2);
const { canvas, ctx, img, data } = canvasPixels(size);
for (let y = 0, i = 0; y < size; y++) {
for (let x = 0; x < size; x++, i++) {
data[i] = y & 1 ^ x & 1 ? col1 : col2;
}
}
if (opts.corners) {
const corners = opts.cornerCols.map(ARGB8888.toABGR);
data[0] = corners[0];
data[size - 1] = corners[1];
data[data.length - size] = corners[2];
data[data.length - 1] = corners[3];
}
ctx.putImageData(img, 0, 0);
return canvas;
};
export {
checkerboard
};