ImageConsumer: imageComplete(int status) : ImageConsumer « java.awt.image « Java by API






ImageConsumer: imageComplete(int status)

// 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);
    }
  }
}

           
       








Related examples in the same category

1.ImageObserver.ALLBITS
2.ImageConsumer.IMAGEABORTED
3.ImageConsumer.IMAGEERROR
4.ImageConsumer.SINGLEFRAMEDONE
5.ImageConsumer.STATICIMAGEDONE
6.ImageConsumer: setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)