// CopyCat // // Energy percentage bar. // // Author Matthew Caryl // Created 17.4.96 package CopyCat; import java.awt.*; final class EnergyBar { private float energy; private int width; private int height; private Color background_color; private Color foreground_color; private Image image; private Graphics graphics; boolean dirty; public EnergyBar(int W, int H, Color B, Color F, Component C) { energy = 0f; width = W; height = H; background_color = B; foreground_color = F; image = C.createImage(W, H); graphics = image.getGraphics(); graphics.setColor(background_color); graphics.fillRect(0, 0, W, H); dirty = true; } protected void finalize() throws Throwable { if (graphics != null) graphics.dispose(); super.finalize(); } public float getEnergy() { return energy; } public void setEnergy(float E) { int old_bar = (int) (width * energy); int new_bar = (int) (width * E); energy = E; if (old_bar < new_bar) { graphics.setColor(foreground_color); graphics.fillRect(old_bar + 1, 0, new_bar - old_bar, height); dirty = true; } else if (old_bar > new_bar) { graphics.setColor(background_color); graphics.fillRect(new_bar + 1, 0, old_bar - new_bar, height); dirty = true; } } public void paint(Graphics g, int X, int Y) { g.drawImage(image, X, Y, null); dirty = false; } public boolean dirty() { return dirty; } }