xxxxxxxxxx
154
let capture;
let median_brightness = Math.floor(255 / 2);
let range_comp = 2;
let consent_screen = [];
let consent_screen_index = 0;
let default_screen;
let consent = 0;
let consent_checkbox_video;
let consent_checkbox_filter;
let consent_video = false;
let consent_filter = false;
let info_button;
let initialized = false;
function preload() {
consent_screen.unshift(loadImage("/p3.png"));
consent_screen.unshift(loadImage("/p2.png"));
consent_screen.unshift(loadImage("/p1.png"));
consent_screen.unshift(loadImage("/p0.png"));
default_screen = loadImage("/p4.png");
capture = createCapture(VIDEO);
capture.size(640, 480);
capture.hide();
}
function setup() {
createCanvas(640, 480);
frameRate(30);
consent_checkbox_video = createCheckbox("Video", false);
consent_checkbox_video.changed(consentChange_video);
consent_checkbox_video.position(512,20);
consent_checkbox_filter = createCheckbox("Filter", false);
consent_checkbox_filter.changed(consentChange_filter);
consent_checkbox_filter.position(570, 20);
info_button = createButton("Info");
info_button.position(20,20);
info_button.mousePressed(open_info);
}
function open_info() {
window.open("https://thankful-halved-rook.glitch.me/p8.html");
}
function draw() {
background(255, 5);
if(initialized){
switch(consent) {
case 1:
capture.loadPixels();
updatePixels();
image(capture, 0, 0, 640, 480);
break;
case 2:
updateAbstract();
image(capture, 0, 0, 640, 480);
break;
default:
image(default_screen,0,0,640,480);
break;
}
}
if(!initialized) {
image(consent_screen[consent_screen_index],0,0);
}
}
function updateAbstract() {
capture.loadPixels();
for (let i = 0; i < capture.pixels.length; i += 4) {
let brightness = capture.pixels[i] + capture.pixels[i + 1] + capture.pixels[i + 2];
capture.pixels[i + 3] = brightness / 5;
if(capture.pixels[i] > capture.pixels[i+1]) {
capture.pixels[i+1] = 0;
} else {
capture.pixels[i] = 0;
}
if(capture.pixels[i+1] > capture.pixels[i+2]) {
capture.pixels[i+2] = 0;
} else {
capture.pixels[i+1] = 0;
}
if (brightness <= median_brightness * range_comp) {
capture.pixels[i] = random(255);
capture.pixels[i + 1] = random(255);
capture.pixels[i + 2] = random(255);
}
}
capture.updatePixels();
}
function updateMedianBrightness() {
let median_brightness_arr = [];
for (let i = 0; i < capture.pixels.length; i += 4) {
let brightness = capture.pixels[i] + capture.pixels[i + 1] + capture.pixels[i + 2];
median_brightness_arr.push(brightness / 3);
}
median_brightness_arr.sort();
median_brightness = median_brightness_arr[floor(median_brightness_arr.length / 2)];
}
function mousePressed () {
if(consent_screen_index < consent_screen.length - 1) {
consent_screen_index += 1;
} else {
initialized = true;
consent = initialized ? consent : 0;
}
if(consent==2) {
updateMedianBrightness();
}
}
function consentChange_video() {
consent_video = this.checked();
if(this.checked()) {
consent = consent_filter ? 2 : 1;
console.log("video checked");
//consent is set to 1 during initialization
}else {
consent = 0;
console.log("video unchecked");
//consent is set to 0 during de_initialization
}
}
function consentChange_filter() {
consent_filter = this.checked();
if(this.checked() && consent_video) {
consent = 2; console.log("filter checked!");
} else {
consent = consent_video ? 1 : 0;
console.log("filter unchecked");
}
}