MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

// This example is from the book _Java AWT Reference_ by John Zukowski.
// Written by John Zukowski.  Copyright (c) 1997 O'Reilly & Associates.
// You may study, use, modify, and distribute this example for any purpose.
// This example is provided WITHOUT WARRANTY either expressed or
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ColorModel;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageConsumer;
import java.awt.image.ImageFilter;
import java.awt.image.ImageProducer;

public class MainClass extends Applet {
    Image i, j;

    public void init() {
        i = getImage(getDocumentBase(), "rosey.jpg");
        j = createImage(new FilteredImageSource(i.getSource(), new DynamicFilter(250, 5, Color.yellow)));
    }

    public void paint(Graphics g) {
        g.drawImage(j, 10, 10, this);
    }
}

class DynamicFilter extends ImageFilter {
    Color overlapColor;

    int delay;

    int imageWidth;

    int imageHeight;

    int iterations;

    DynamicFilter(int delay, int iterations, Color color) {
        this.delay = delay;
        this.iterations = iterations;
        overlapColor = color;
    }

    public void setDimensions(int width, int height) {
        imageWidth = width;
        imageHeight = height;
        consumer.setDimensions(width, height);
    }

    public void setHints(int hints) {
        consumer.setHints(ImageConsumer.RANDOMPIXELORDER);
    }

    public void resendTopDownLeftRight(ImageProducer ip) {
    }

    public void imageComplete(int status) {
        if ((status == IMAGEERROR) || (status == IMAGEABORTED)) {
            consumer.imageComplete(status);
            return;
        } else {
            int xWidth = imageWidth / iterations;
            if (xWidth <= 0)
                xWidth = 1;
            int newPixels[] = new int[xWidth * imageHeight];
            int iColor = overlapColor.getRGB();
            for (int x = 0; x < (xWidth * imageHeight); x++)
                newPixels[x] = iColor;
            int t = 0;
            for (; t < (imageWidth - xWidth); t += xWidth) {
                consumer.setPixels(t, 0, xWidth, imageHeight, ColorModel.getRGBdefault(), newPixels, 0, xWidth);
                consumer.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
                try {
                    Thread.sleep(delay);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            int left = imageWidth - t;
            if (left > 0) {
                consumer.setPixels(imageWidth - left, 0, left, imageHeight, ColorModel.getRGBdefault(), newPixels,
                        0, xWidth);
                consumer.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
            }
            consumer.imageComplete(STATICIMAGEDONE);
        }
    }
}