/** * Bodycount * * visualizes the iraqi body count data from * http://www.iraqbodycount.net * * by Evan Raskob 2003_09_08 */ String lines[]; BFont metaBold; int cnt; static final int ROWCOUNT = 177; static final int RECTWIDTH = 5; Integer min_max_dead[][]; void setup() { size(ROWCOUNT*RECTWIDTH, 600); min_max_dead = new Integer[2][177]; lines = loadStrings("iraqbodycount.txt"); background(#989898); metaBold = loadFont("Meta-Bold.vlw.gz"); setFont(metaBold, 40); hint(SMOOTH_IMAGES); for (cnt = 0; cnt < ROWCOUNT; cnt++) { min_max_dead[0][cnt] = new Integer((splitStrings(lines[cnt], '\t')[6])); min_max_dead[1][cnt] = new Integer((splitStrings(lines[cnt], '\t')[7])); /* println("min = " + min_max_dead[0][cnt]); println("max = " + min_max_dead[1][cnt]); println("size = " + min_max_dead[0].length); */ } } void loop() { delay(100); int diff = 0; int redFill = 0; int textX = 0; int textY = 0; for (cnt = 0; cnt < ROWCOUNT; cnt++) { diff = getMaxDead(cnt*RECTWIDTH) - getMinDead(cnt*RECTWIDTH); // calculate red fill color value redFill = getMinDead(cnt*RECTWIDTH)*2; if (redFill > 255) redFill =255; fill(redFill, 0, 0); rect(cnt*RECTWIDTH, 0, RECTWIDTH, diff); } fill(230, 210, 120); textX = 25; textY = 85; text("how certain is death?", textX, textY); if (mouseX > 0 && mouseX < ROWCOUNT*RECTWIDTH) { textX+=20; textY+=20; setFont(metaBold, 20); text("max :"+getMaxDead(mouseX), textX, textY); textY+=16; text("min :"+getMinDead(mouseX), textX, textY); textX-=20; textY+=20; text("uncertainty :"+ getUncertainty(mouseX)+"%", textX, textY); setFont(metaBold, 40); } fill(#FFFFFF); } int getMaxDead(float index) { return getMaxDead(int(index)); } int getMaxDead(int index) { index = int(index/RECTWIDTH); return min_max_dead[1][index].intValue(); } int getMinDead(float index) { return getMinDead(int(index)); } int getMinDead(int index) { index = int(index/RECTWIDTH); return min_max_dead[0][index].intValue(); } int getUncertainty(int index) { int retval = 0; if (getMinDead(index) > 0) retval = int(100*(getMaxDead(index)-getMinDead(index))/getMinDead(index)); return retval; }