import java.io.*; import javax.imageio.*; import java.awt.image.*; import java.awt.*; import java.lang.*; import java.lang.Math.*; import java.util.*; import java.util.Arrays.*; public class PlaceDots2 { public static void main(String args[ ]) throws IOException { String[] filename = new String[3]; filename[0]=args[0]; filename[1]="SCoord.txt"; filename[2]="TCoord.txt"; ReadLines(filename); } static void ReadLines(String[] filename) throws IOException { BufferedReader in1 = new BufferedReader(new FileReader(filename[1])); BufferedReader in2 = new BufferedReader(new FileReader(filename[2])); int lineCount1 = 0; int lineCount2 = 0; do { String line = in1.readLine(); if (line == null) break; lineCount1++; } while (true); do { String line = in2.readLine(); if (line == null) break; lineCount2++; } while (true); double[][] Coord1 = new double [lineCount1][2]; double[][] Coord2 = new double [lineCount2][2]; LineNumberReader lnr1 = new LineNumberReader(new FileReader(filename[1])); lnr1.setLineNumber(1); StreamTokenizer stok1 = new StreamTokenizer(lnr1); stok1.parseNumbers(); stok1.eolIsSignificant(true); stok1.nextToken(); int rownum = -1; while (stok1.ttype != StreamTokenizer.TT_EOF) { double x1=0; double y1=0; double x2=0; double y2=0; while (stok1.ttype != StreamTokenizer.TT_EOF) { for (int colnum=1; colnum<=3; colnum++) { if (colnum==1) {x1=stok1.nval; } if (colnum==2) {y1=stok1.nval; } if (colnum==3) {stok1.nextToken(); rownum++; break;} stok1.nextToken(); } Coord1[rownum][0]=x1; Coord1[rownum][1]=y1; if (stok1.ttype == StreamTokenizer.TT_EOF) {break;} } if (stok1.ttype == StreamTokenizer.TT_EOF) {break;} } rownum = -1; LineNumberReader lnr2 = new LineNumberReader(new FileReader(filename[2])); lnr1.setLineNumber(1); StreamTokenizer stok2 = new StreamTokenizer(lnr2); stok2.parseNumbers(); stok2.eolIsSignificant(true); stok2.nextToken(); while (stok2.ttype != StreamTokenizer.TT_EOF) { double x2=0; double y2=0; while (stok2.ttype != StreamTokenizer.TT_EOF) { for (int colnum=1; colnum<=3; colnum++) { if (colnum==1) {x2=stok2.nval; } if (colnum==2) {y2=stok2.nval; } if (colnum==3) {stok2.nextToken(); rownum++; break;} stok2.nextToken(); } Coord2[rownum][0]=x2; Coord2[rownum][1]=y2; if (stok2.ttype == StreamTokenizer.TT_EOF) {break;} } if (stok2.ttype == StreamTokenizer.TT_EOF) {break;} } double MaxX1 = 0; double MaxY1 = 0; double MaxX2 = 0; double MaxY2 = 0; for (int i = 0; i <= Coord1.length-1; i++) { if (Coord1[i][0] > MaxX1) { MaxX1 = Coord1[i][0]; } if (Coord1[i][1] > MaxY1) { MaxY1 = Coord1[i][1]; } } for (int i = 0; i <= Coord2.length-1; i++) { if (Coord2[i][0] > MaxX2) { MaxX2 = Coord2[i][0]; } if (Coord2[i][1] > MaxY2) { MaxY2 = Coord2[i][1]; } } double MaxX = 0; double MaxY = 0; if (MaxX1 > MaxX2) { MaxX = MaxX1; } if (MaxX1 < MaxX2) { MaxX = MaxX2; } if (MaxY1 > MaxY2) { MaxY = MaxY1; } if (MaxY1 < MaxY2) { MaxY = MaxY2; } int width = (int)MaxX; int height = (int)MaxY; BufferedImage image = new BufferedImage(width + 10, height + 10, BufferedImage.TYPE_INT_RGB); String format = "JPG"; if (filename[0].toLowerCase().endsWith(".png")) {format = "PNG";} if (filename[0].toLowerCase().endsWith(".bmp")) {format = "BMP";} else if (!(filename[0].toLowerCase().endsWith(".bmp")) && !(filename[0].toLowerCase().endsWith(".png")) && !(filename[0].toLowerCase().endsWith(".jpg"))) {System.out.println("Error: choose only .jpg, .png, or .bmp images");} for (int i = 0; i <= Coord1.length-1; i++) { Graphics graphics = image.getGraphics(); Color color = new Color(255, 0, 0); graphics.setColor(color); graphics.fillRect((int)Coord1[i][0] - 4, (int)Coord1[i][1] - 4, 8, 8); } for (int i = 0; i <= Coord2.length-1; i++) { Graphics graphics = image.getGraphics(); Color color = new Color(0, 255, 0); graphics.setColor(color); graphics.fillRect((int)Coord2[i][0] - 4, (int)Coord2[i][1] - 4, 8, 8); } ImageIO.write(image, format, new File(filename[0])); } }