//
/* ----------------------------------------------------------------------------------------------
	paint.java		落書きボード								ver. 1.00 (JDK 1.02)
																ueyama@infonet.co.jp  2000.11.17
---------------------------------------------------------------------------------------------- */
import java.applet.*;
import java.awt.*;
import java.util.*;


public class paint extends Applet
{
	int			PS=6;												// 現在のペンの太さ
	int			PC=0;												// 現在のペンの色
	int			PenSize[]={4,6,10,14,18,24};						// ペンの太さの種類
	Color		PenColor[]={Color.black, Color.blue, Color.cyan, Color.darkGray, Color.gray,
							Color.green, Color.lightGray, Color.magenta, Color.orange,
							Color.pink, Color.red, Color.yellow, Color.white};	// ペンの色の種類
	Graphics	gr;
	
	public void init()												// 初期設定
	{
		setBackground(Color.white);
		gr=getGraphics();
	}

	public void disp_pen(int n)										// ペンのサイズの表示
	{
		int p=PenSize[n];
		gr.setColor((PS==p)? PenColor[4]: PenColor[12]);			// 現在のペンサイズは灰色に
		gr.drawRect(361+n*30, 370, 28, 28);							// 正方形を描く
		gr.setColor(PenColor[PC]);
		gr.fillOval(360+n*30+15-p/2, 370+15-p/2, p, p);				// 円を描く
	}
	
	public void paint(Graphics g)									// 画面の表示
	{
		int i;
		g.clearRect(0,0,600,400);
		for(i=0; i<12; i++)											// カラーパレットの表示
		{
			g.setColor(PenColor[i]);
			g.fillRect(i*30, 370, 30, 30);
		}
		g.setColor(PenColor[0]);
		for(i=0; i<20; i++) g.drawRect(i*30, 369, 30, 30);			// 正方形を描く
		for(i=0; i< 6; i++) disp_pen(i);							// ペンの表示
		g.drawLine(599, 370, 570, 399);								// クリアエリアの斜線
		g.setColor(PenColor[6]);									// 消しゴムの表示
		g.fillRect(541, 370, 29, 29);
		g.setColor(PenColor[12]);
		g.fillOval(541+7, 370+6, 18, 18);
	}
	
	public boolean mouseDown(Event e, int x, int y)					// マウスがクリックされたときの処理
	{
		if(y>370)
		{
			if(x<360)												// ペンの色の変更
			{
				PC = x/30;
				for(int i=0; i<6; i++) disp_pen(i);
			}
			else if(x<540)
			{
				PS = PenSize[(x-360)/30];							// ペンの太さの変更
				for(int i=0; i< 6; i++) disp_pen(i);				// ペンの表示
			}
			else if(x<570) gr.setColor(PenColor[12]);				// 消しゴム
			else gr.clearRect(0, 0, 600, 369);						// 画面のクリア
		}
		return true;
	}
	
	public boolean mouseDrag(Event e, int x, int y)					// マウスがドラッグされたときの処理
	{
		if(y < 370-PS/2) gr.fillOval(x-PS/2, y-PS/2, PS, PS);		// 円を描く
		return true;
	}
}
//
戻る