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

class ZbufferedRaster extends Raster
{
	public static final int Zfar = Integer.MIN_VALUE;
	public static final int Znear = Integer.MAX_VALUE;
	public int Z[];

	//Constructors///////////////

	public ZbufferedRaster()
	{
		super();
	};

	public ZbufferedRaster(int w, int h)
	{
		super(w,h);
		int s = w*h;
		Z = new int[s];
		for (int i=0; i<s; i++)
			Z[i] = Zfar;
	};

	ZbufferedRaster(Image img)
	{
		super();
		int s = width*height;
		Z = new int[s];
		for (int i=0; i<s; i++)
			Z[i] = Zfar;
	};



	//Methods///////////////

	public void fill(Color c)
	{
		int s = size();
		int rgb = c.getRGB();
		for (int i=0; i<s; i++)
		{
			pixel[i] = rgb;
		};
	};
	
	
	public void fill(Color c, int newZ)
	{
		int s = size();
		int rgb = c.getRGB();
		for (int i=0; i<s; i++)
		{
			pixel[i] = rgb;
			Z[i] = newZ;
		};
	};


	public void resetz()
	{
		int s = size();
		for (int i=0; i<s; i++)
			Z[i] = Zfar;
	};


	public boolean setPixel(int pix, int x, int y, int z)
	{
		int i = y*width+x;
		if (z >= Z[i])
		{
			pixel[i] = pix;
			Z[i]=z;
		}
		return true;
	};

	
	public boolean setColor(Color c, int pixZ, int x, int y)
	{
		int i = y*width+x;
		if (pixZ >= Z[i])
		{
			pixel[i] = c.getRGB();
			Z[i]=pixZ;
		};
		return true;
	};

};