package nbtool.images; import java.awt.image.BufferedImage; import nbtool.images.YUYV8888Image; import java.util.Vector; import java.awt.Graphics2D; import java.awt.BasicStroke; import java.awt.geom.Ellipse2D; public final class Ballimage extends ImageParent { public int pixelSize() { return 2; } private Vector<String> balls; public Ballimage(int w, int h, byte[] d, String[] ballLocs) { super(w, h, d); balls = new Vector<String>(); for(String s: ballLocs) { if(s.length() > 1) { // Strip leading and trailing braces String toAdd = s.substring(1, s.length() - 1); balls.add(toAdd); } } } public BufferedImage toBufferedImage() { YUYV8888Image yuv = new YUYV8888Image(width, height, data); BufferedImage intermediate = yuv.toBufferedImage(); Graphics2D g = intermediate.createGraphics(); g.setStroke(new BasicStroke(1)); int count = 0; for(String ball: balls) { String[] split = ball.split(","); if (split.length != 5) { System.out.println("Ballimage had malformed ball in it: " + ball); continue; } double centerX = Double.parseDouble(split[0]); double centerY = Double.parseDouble(split[1]); double radius = Double.parseDouble(split[2]); double rating = Double.parseDouble(split[3]); double distance = Double.parseDouble(split[4]); g.draw(new Ellipse2D.Double(centerX - radius, centerY - radius, radius * 2, radius * 2)); g.drawString(Integer.toString(count), (int)(centerX + radius) + 2, (int)(centerY + radius) + 2); count++; } return intermediate; } public String encoding() { return "[Ball]"; } }