/*	@(#)Tartan.java	Copyright 1997 Gregory J. Scott */

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.io.*;
import java.lang.*;
import java.net.URL;

public class Tartan extends java.applet.Applet {
Object colors[];
int counts[];
int cMax;
String tartan;

public void init() {
   int i;
	colors = new Color[20];
	counts = new int[20];
	String sr, sg, sb, sc; 
	i = 0;
	cMax = 0;

	sc = getParameter("c00");
	sr = getParameter("r00");
	sg = getParameter("g00");
	sb = getParameter("b00");
	counts[ 0] = Integer.parseInt(sc);
	colors[ 0] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c01");
	sr = getParameter("r01");
	sg = getParameter("g01");
	sb = getParameter("b01");
	counts[ 1] = Integer.parseInt(sc);
	colors[ 1] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c02");
	sr = getParameter("r02");
	sg = getParameter("g02");
	sb = getParameter("b02");
	counts[ 2] = Integer.parseInt(sc);
	colors[ 2] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c03");
	sr = getParameter("r03");
	sg = getParameter("g03");
	sb = getParameter("b03");
	counts[ 3] = Integer.parseInt(sc);
	colors[ 3] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c04");
	sr = getParameter("r04");
	sg = getParameter("g04");
	sb = getParameter("b04");
	counts[ 4] = Integer.parseInt(sc);
	colors[ 4] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c05");
	sr = getParameter("r05");
	sg = getParameter("g05");
	sb = getParameter("b05");
	counts[ 5] = Integer.parseInt(sc);
	colors[ 5] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c06");
	sr = getParameter("r06");
	sg = getParameter("g06");
	sb = getParameter("b06");
	counts[ 6] = Integer.parseInt(sc);
	colors[ 6] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c07");
	sr = getParameter("r07");
	sg = getParameter("g07");
	sb = getParameter("b07");
	counts[ 7] = Integer.parseInt(sc);
	colors[ 7] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c08");
	sr = getParameter("r08");
	sg = getParameter("g08");
	sb = getParameter("b08");
	counts[ 8] = Integer.parseInt(sc);
	colors[ 8] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c09");
	sr = getParameter("r09");
	sg = getParameter("g09");
	sb = getParameter("b09");
	counts[ 9] = Integer.parseInt(sc);
	colors[ 9] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c10");
	sr = getParameter("r10");
	sg = getParameter("g10");
	sb = getParameter("b10");
	counts[10] = Integer.parseInt(sc);
	colors[10] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c11");
	sr = getParameter("r11");
	sg = getParameter("g11");
	sb = getParameter("b11");
	counts[11] = Integer.parseInt(sc);
	colors[11] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c12");
	sr = getParameter("r12");
	sg = getParameter("g12");
	sb = getParameter("b12");
	counts[12] = Integer.parseInt(sc);
	colors[12] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c13");
	sr = getParameter("r13");
	sg = getParameter("g13");
	sb = getParameter("b13");
	counts[13] = Integer.parseInt(sc);
	colors[13] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c14");
	sr = getParameter("r14");
	sg = getParameter("g14");
	sb = getParameter("b14");
	counts[14] = Integer.parseInt(sc);
	colors[14] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c15");
	sr = getParameter("r15");
	sg = getParameter("g15");
	sb = getParameter("b15");
	counts[15] = Integer.parseInt(sc);
	colors[15] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c16");
	sr = getParameter("r16");
	sg = getParameter("g16");
	sb = getParameter("b16");
	counts[16] = Integer.parseInt(sc);
	colors[16] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c17");
	sr = getParameter("r17");
	sg = getParameter("g17");
	sb = getParameter("b17");
	counts[17] = Integer.parseInt(sc);
	colors[17] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c18");
	sr = getParameter("r18");
	sg = getParameter("g18");
	sb = getParameter("b18");
	counts[18] = Integer.parseInt(sc);
	colors[18] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	sc = getParameter("c19");
	sr = getParameter("r19");
	sg = getParameter("g19");
	sb = getParameter("b19");
	counts[19] = Integer.parseInt(sc);
	colors[19] = new Color( Integer.parseInt(sr),
									Integer.parseInt(sg),
									Integer.parseInt(sb) );

	for ( i = 0; i <= 19; i++ ) {
		if (counts[i] > 0 ) { cMax++; }
	}
}

public void paint(Graphics g) {
int x, y, xMin, xMax, yMin, yMax, c, i, j, nStart ;
boolean bOver;
xMax = size().width;
yMax = size().height;
xMin = 0;
x = xMin;
yMin = 0;
y = yMin;

while ( y < yMax ) {
	for ( c = 0; c <= cMax; c++  ) {
		g.setColor((Color)(colors[c]));
		for ( j = 1; j <= counts[c]; j++ ) {
   		if (y < yMax ) {
				g.drawLine( xMin, y, xMax, y );
				y++;
			}	
		}
	}
	for ( c = cMax; c > 0; c--  ) {
		g.setColor((Color)(colors[c]));
		for ( j = 1; j <= counts[c]; j++ ) {
   		if (y < yMax ) {
				g.drawLine( xMin, y, xMax, y );
				y++;
			}	
		}
	}
}


nStart = 0;
while ( x < xMax ) {
	for ( c = 0; c <= cMax; c++ ) {
		g.setColor((Color)(colors[c]));
		for ( j = 1; j <= counts[c]; j++ ) {
		   if ( x < xMax ) {
	   	   i = nStart;
				while ( i+1 < yMax ) {
					g.drawLine( x, i, x, i+1 );
					i+=4;
				}
			x++;
			nStart = (nStart+1)%4;
	   	}
	   }
	}

	for ( c = cMax; c > 0; c-- ) {
		g.setColor((Color)(colors[c]));
		for ( j = 1; j <= counts[c]; j++ ) {
		   if ( x < xMax ) {
	   	   i = nStart;
				while ( i+1 < yMax ) {
					g.drawLine( x, i, x, i+1 );
					i+=4;
				}
			x++;
			nStart = (nStart+1)%4;
	   	}
	   }
	}

}

}
}















