phantasia4/
phantasia4/conf/
phantasia4/phantasia/bin/
phantasia4/phantasia/src/utilities/
phantasia4/public_html/cgi-bin/
import java.awt.*;

public class barGraph extends Canvas implements constants {

    float percent = 0;
    float otherPercent = 0;
    long otherMax = 0;
    String theValue;
    int cx = 0;
    int canvasWidth = 0;
    int canvasHeight = 0;
    int theFill = 0;
    Rectangle theBounds = null;
    Color fillColor = null;
    FontMetrics fm = null;
    Font theFont = new Font("Helvetica", Font.BOLD, 12);

    public barGraph() {

	super();
	setBackground(highlightColor);
	percent = 0;
	theValue = "0";
    }

    public void paint(Graphics g) {

	theBounds = getBounds();
	canvasWidth = theBounds.width - 1;
	canvasHeight = theBounds.height - 1;

	if (percent == 1) {
	    fillColor = Color.green;
	}
	else if (percent < .2) {
	    fillColor = Color.red;
	}
	else if (percent > .7) {
	    fillColor = new Color((float)Math.cos(3.14159*(percent-.7)), (float)1.0, (float)0);
	}
	else {
	    fillColor = new Color((float)1.0, (float)Math.sin(3.14159*(percent-.2)), (float)0);
	}

	fm = getFontMetrics(theFont);
	cx = (int) ((canvasWidth - fm.stringWidth(theValue)) / 2);

	g.setColor(highlightColor);
	g.clearRect(0, 0, canvasWidth, canvasHeight);

	if (otherPercent > 0) {
	    g.setColor(Color.blue);
	    theFill = (int) (otherPercent * canvasWidth);
	    g.fillRect(0, 0, theFill, canvasHeight);
	}

	g.setColor(foregroundColor);
	g.drawRect(0, 0, canvasWidth, canvasHeight);
	g.drawRect(1, 1, canvasWidth - 2, canvasHeight - 2);
	
	g.setColor(fillColor);
	theFill = (int) (percent * (canvasWidth - 7));
	g.fillRect(4, 4, theFill, canvasHeight - 7);

	g.setColor(foregroundColor);
	g.setFont(theFont);
	g.drawString(theValue, cx, 14);
    }

    public void changeStats(String value, long maxValue, long secondValue) {

	percent = (float)Long.parseLong(value)/maxValue;
	theValue = value;

	if (secondValue == 0) {
	    otherPercent = 0;
	    otherMax = 0;
	}
	else if (secondValue > otherMax) {
	    otherMax = secondValue;
	    otherPercent = 1;
	}
	else {
	    otherPercent = (float)secondValue/otherMax;
	}

	paint(getGraphics());
    }
}