// Viewer.java read a .png file and display it // java Viewer xxx.png coord.dat digitize import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.text.*; public class Viewer extends Frame { PrintWriter File_out; private Image image; public Viewer(String filename, String fileout) { Toolkit toolkit = Toolkit.getDefaultToolkit(); image = toolkit.getImage(filename); MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(image, 0); try { mediaTracker.waitForID(0); } catch(InterruptedException ie) { System.err.println(ie); System.exit(1); } try { BufferedWriter out = new BufferedWriter(new FileWriter(fileout)); File_out = new PrintWriter(out); System.out.println("opened "+fileout+" for writing"); } catch(IOException exception) { System.out.println("output file "+exception); } addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);} }); setSize(image.getWidth(null)+20, image.getHeight(null)+50); setTitle(filename); this.addMouseListener (new mousePressHandler()); setVisible(true); // show(); } class mousePressHandler extends MouseAdapter { public void mousePressed (MouseEvent e) { int x = e.getX(); int y = e.getY(); int b = e.getButton(); if(b==3) { File_out.close(); System.exit(1); } System.out.println("x="+x+", y="+y+", b="+b); File_out.println(((float)x/10.0)+" "+((float)y/10.0)+" "+0.0); } } public void paint(Graphics g) { g.drawImage(image, 10, 40, null); } public static void main(String[] args) { new Viewer(args[0],args[1]); } } // end class Viewer