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