xxxxxxxxxx
92
let cp437;
let ridx;
let row;
let cidx;
let col;
let shift;
let dir;
//let test = 0;
function preload()
{
cp437 = loadImage( 'cp437.png' );
}
function next()
{
cidx = -1;
ridx = -1;
shift = 0;
dir = random(1) < 0.5;
if( random(1) < 0.5 ) {
ridx = int( random( cp437.height ) );
row.copy( cp437, 0, ridx, cp437.width, 1, 0, 0, cp437.width, 1 );
row.loadPixels();
} else {
cidx = int( random( cp437.width ) );
col.copy( cp437, cidx, 0, 1, cp437.height, 0, 0, 1, cp437.height );
col.loadPixels();
}
/*
cidx = test;
ridx = -1;
// row.copy( cp437, 0, ridx, cp437.width, 1, 0, 0, cp437.width, 1 );
//row.loadPixels();
col.copy( cp437, cidx, 0, 1, cp437.height, 0, 0, 1, cp437.height );
col.loadPixels();
dir = false;
++test;
*/
}
function setup() {
createCanvas(580, 256);
cp437.filter( THRESHOLD );
row = createImage( cp437.width, 1 );
col = createImage( 1, cp437.height );
next();
}
function draw() {
cp437.loadPixels();
const offs = shift * (dir?-1:1);
if( ridx >= 0 ) {
for( let idx = 0; idx < cp437.width; ++idx ) {
const tq = 4*(ridx*cp437.width + (idx+offs+cp437.width)%cp437.width);
const fq = 4*idx;
cp437.pixels[tq] = row.pixels[fq];
cp437.pixels[tq+1] = row.pixels[fq+1];
cp437.pixels[tq+2] = row.pixels[fq+2];
cp437.pixels[tq+3] = row.pixels[fq+3];
}
} else {
for( let idx = 0; idx < cp437.height; ++idx ) {
const tq = 4*(((idx+offs+cp437.height)%cp437.height)*cp437.width + cidx);
const fq = 4*idx;
cp437.pixels[tq] = col.pixels[fq];
cp437.pixels[tq+1] = col.pixels[fq+1];
cp437.pixels[tq+2] = col.pixels[fq+2];
cp437.pixels[tq+3] = col.pixels[fq+3];
}
}
cp437.updatePixels();
image( cp437, 0, 0, 580, 256 );
++shift;
if( ((ridx>=0) && (shift==9)) || ((cidx >= 0) && (shift==16)) ) {
next();
}
}
function keyPressed()
{
if( key === "s" ) {
save( "jan9.png" );
}
}