
import java.applet.*;
import java.awt.*;
import java.awt.image.*;

public class MainClass extends Applet
{
	final int 	W=320,
				H=240;
	Image img = null;
	MemoryImageSource mis = null;	
	
	public void init()
	{
		this.setSize(W,H);
		this.setBackground(Color.GRAY);
		
		int pixels[] = new int[W*H];		
		for (int i=0; i < W*H; i++)
			pixels[i] =  255 << 24 | 255 << 16 | 255 << 8 | 255;
		
		int color[] = new int[3];
		color[0] = 200;	color[1] = 200;	color[2] = 200;
		pixels = wirePolygon(	new Point(50,50), 
								new Point(200,100),
								new Point(70,220),
								color, pixels);
		mis = new MemoryImageSource(W, H, pixels, 0, W);		
	    img = createImage(mis);		    	    
	}
	
	public void paint (Graphics g)
	{		
		g.drawImage(img,0,0,this);		
	}
	
	//-----------------------------------------------------------------------
	// Draw wire polygon
	//-----------------------------------------------------------------------
	public int[] wirePolygon(	Point fpP1,
								Point fpP2,
								Point fpP3,
								int fpColor[],
								int fpPixels[])
	{
		fpPixels = line(fpP1, fpP2, fpColor, fpPixels);
		fpPixels = line(fpP2, fpP3, fpColor, fpPixels);
		fpPixels = line(fpP3, fpP1, fpColor, fpPixels);
		return fpPixels;
	}
	//-----------------------------------------------------------------------
	
	//-----------------------------------------------------------------------
	// Draw line
	//-----------------------------------------------------------------------
	public int[] line(	Point fpP1,
						Point fpP2,
						int fpColor[],
						int fpPixels[])
	{
		int iDx = fpP2.x - fpP1.x,
			iDy = fpP2.y - fpP1.y,
			iXstep = 0,
			iYstep = 0,
			iX = fpP1.x,
			iY = fpP1.y;
		
		
		if (iDx >= 0)
		{
			iXstep = 1;
		}
		else
		{
			iXstep = -1;
			iDx = -iDx;
		}
		
		if (iDy >= 0)
		{
			iYstep = 1;
		}
		else
		{
			iYstep = -1;
			iDy = -iDy;
		}
		
		int iDx2 = iDx << 1;
		int iDy2 = iDy << 1;
		
		if (iDx > iDy)
		{
			int iError = iDy2 - iDx;
			
			for (int i=0; i <= iDx; i++)
			{				
				fpPixels[iY*W+iX] = 255<<24 | fpColor[0] << 16 | fpColor[1] << 8 | fpColor[2];
				
				if (iError >= 0)
				{
					iError -= iDx2;
					iY += iYstep;
				}
				
				iError += iDy2;
				iX += iXstep;
			}
		}
		else
		{
			int iError = iDx2 - iDy;
			
			for (int i=0; i <= iDy; i++)
			{				
				fpPixels[iY*W+iX] = 255<<24 | fpColor[0] << 16 | fpColor[1] << 8 | fpColor[2];
				
				if (iError >= 0)
				{
					iError -= iDy2;
					iX += iXstep;
				}
				
				iError += iDx2;
				iY += iYstep;
			}
		}
		
		return fpPixels;
	}
	//-----------------------------------------------------------------------		
}
