//
// Copyright 2001 Ken Perlin

package render;

import java.awt.*;
import java.awt.image.*;

/**
 */

public class ImageBuffer {

   
   public ImageBuffer(int width, int height) {
      init(width, height);
   }

   public ImageBuffer(int[] pixels, int w, int h) {
      pix = pixels;
      width = w;
      height = h;
   }

   public ImageBuffer(Image src, Component component) {
      try {
         MediaTracker mt = new MediaTracker(component);
         mt.addImage(src, 1);
         mt.waitForAll();
         init(src.getWidth(component), src.getHeight(component));
         (new PixelGrabber(src, 0, 0, width, height, pix, 0, width)).grabPixels();
      } catch (InterruptedException e) {
      }
   }
   public int getWidth() {
      return width;
   }
   public int getHeight() {
      return height;
   }
   public int get(int x, int y) {
      x = Math.max(0, Math.min(width - 1, x));
      y = Math.max(0, Math.min(height - 1, y));
      return pix[x + y * width];
   }
   public void set(int x, int y, int rgb) {
      if (x >= 0 && x < width && y >= 0 && y < height)
         pix[x + y * width] = rgb;
   }
   void init(int w, int h) {
      width = w;
      height = h;
      pix = new int[w * h];
   }
   public int pix[] = null, width = 0, height = 0;
}