import java.awt.*;
import java.awt.image.*;
class Raster {
    protected int width, height;
    public int pixel[];
    ///////////////////////// Constructors //////////////////////    /**     *  This constructor which takes no arguments     *  allows for future extension.     */
    public Raster()    {    }
    /**     *  This constructor creates an uninitialized     *  Raster Object of a given size (w x h).     */
    public Raster(int w, int h)    {        width = w;        height = h;        pixel = new int[w*h];    }
    /**     *  This constructor creates an Raster initialized
     *  with the contents of an image.
     */
    public Raster(Image img)
    {
        try {
			PixelGrabber grabber = new PixelGrabber(img, 0, 0, -1, -1, true);
			if (grabber.grabPixels()) {                width = grabber.getWidth();                height = grabber.getHeight();                pixel = (int []) grabber.getPixels();            }        } catch (InterruptedException e) {        }    }
    ////////////////////////// Methods //////////////////////////    /**     *  Returns the number of pixels in the Raster     */
    public int size( ) {        return pixel.length;    }
    /**     *  Access instance variables     */
    public int getWidth() {        return width;    }
    public int getHeight() {        return height;    }
    public int [] getPixels() {
		return pixel;
    }
    /**     *  Fills a Raster with a solid color     */    public void fill(Color c) {        int s = size();        int rgb = c.getRGB();        for (int i = 0; i < s; i++)            pixel[i] = rgb;    }    /**     *  Converts Rasters to Images     */    public Image toImage() {        Toolkit toolkit = Toolkit.getDefaultToolkit();        Image img = toolkit.createImage(new MemoryImageSource(width, height, pixel, 0, width));        return img;    }
    /**     *  Gets a pixel from a Raster     */    public int getPixel(int x, int y) {        return pixel[y*width+x];    }
    /**     *  Gets a color from a Raster     */    public Color getColor(int x, int y) {        return new Color(pixel[y*width+x]);    }
    /**     *  Sets a pixel to a given value     */    public boolean setPixel(int pix, int x, int y) {        pixel[y*width+x] = pix;        return true;    }
    /**     *  Sets a pixel to a given color     */
    public boolean setColor(Color c, int x, int y) {        pixel[y*width+x] = c.getRGB();        return true;    }}