import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
import java.util.zip.*;
public class window extends BApplet {
// Window
// by bpaul
// Blur an image by processing it through a
// low-pass filter. Then display a small window that
// follows the mouse that shows the original image
// Created 9 December 2002
BImage a; // the original image
BImage b; // the blurred image
int n2 = 5/2;
int m2 = 5/2;
float val = 1.0f/12.0f;
float[][] kernel = { {val, val, val, val, val},
{val, val, val, val, val},
{val, val, val, val, val},
{val, val, val, val, val},
{val, val, val, val, val} };
void setup ()
{
size(400, 533);
a = loadImage("Family2.jpg"); // Load the images into the program
b = loadImage("Family2.jpg");
// Convolve the image
for(int y=0; y= width) {
xp = xp - width;
}
// Reflect y-k to not exceed array boundary
if (yp < 0) {
yp = yp + height;
} else if (yp >= height) {
yp = yp - height;
}
sum = sum + kernel[j+m2][k+n2] * red(a.pixels[xp+ yp*a.width]);
}
}
int isum = (int)(sum);
b.pixels[x + y*width] = color(isum, isum, isum);
}
}
noBackground();
}
int once = 0;
int lastX = 0;
int lastY = 0;
int mx;
int my;
float delay = 20.0f;
void loop()
{
// Put blurred image into background the first time through the loop
if (once == 0) {
image(b, 0, 0); // Displays the image from point (0,0)
once = 1;
}
// follow the mouse with delay
if(abs(mouseX - mx ) > 1) {
mx = (int)(mx + (mouseX - mx)/delay);
}
if(abs(mouseY - my) > 1) {
my = (int)(my + (mouseY - my)/delay);
}
wipe (mx, my, 100, 100);
}
void wipe (int x, int y, int wwidth, int wheight)
{
// constrain points to screen
x = (int)(constrain (x, 0, width));
y = (int)(constrain (y, 0, height));
// if the mouse isn't pressed then replace the background
if (!mousePressed) {
for(int i=lastY; i