// Copyright 2004-2006, FreeHEP. package org.freehep.postscript; import java.awt.Color; import java.io.FileNotFoundException; import java.util.List; import javax.swing.JFrame; import org.freehep.util.argv.ArgumentFormatException; import org.freehep.util.argv.ArgumentParser; import org.freehep.util.argv.BooleanOption; import org.freehep.util.argv.DoubleOption; import org.freehep.util.argv.IntOption; import org.freehep.util.argv.MissingArgumentException; import org.freehep.util.argv.StringParameter; /** * PS Viewer * * @author Mark Donszelmann * @version $Id: PSViewer.java 10178 2006-12-08 09:03:07Z duns $ */ public class PSViewer { public static void main(String args[]) throws Exception { BooleanOption help = new BooleanOption( "-help", "-h", "Show this help page", true); BooleanOption version = new BooleanOption( "-version", "-v", "Show product version", true); BooleanOption debug = new BooleanOption( "-debug", "-d", "Run with debugger"); DoubleOption scale = new DoubleOption( "-scale", "-s", "factor", 1.0, "Scale output by factor"); DoubleOption tx = new DoubleOption( "-transX", "-tx", "dx", 0.0, "Displace output in x by dx"); DoubleOption ty = new DoubleOption( "-transY", "-ty", "dy", 0.0, "Displace output in y by dy"); IntOption page = new IntOption( "-page", "-p", "#", 1, "Page to be displayed"); StringParameter file = new StringParameter("file", "PostScript File"); ArgumentParser parser = new ArgumentParser("org.freehep.postscript.PSViewer"); parser.add(help); parser.add(version); parser.add(debug); parser.add(scale); parser.add(tx); parser.add(ty); parser.add(page); parser.add(file); try { List extra = parser.parse(args); if (!extra.isEmpty() || help.getValue()) { parser.printUsage(System.out); return; } if (version.getValue()) { System.err.println("$Id: PSViewer.java 10178 2006-12-08 09:03:07Z duns $"); return; } } catch (MissingArgumentException mae) { System.out.println(mae.getMessage()); return; } catch (ArgumentFormatException afe) { System.out.println(afe.getMessage()); return; } String name = file.getValue(); try { PSPanel panel = new PSPanel(); panel.setBackground(Color.WHITE); JFrame frame = new JFrame("PostScript Output"); frame.getContentPane().add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 700); frame.setVisible(true); Processor processor = new Processor(panel); processor.setData(new PSInputFile(name)); processor.setPageNo(page.getValue().intValue()); processor.setScale(scale.getValue().doubleValue(), scale.getValue().doubleValue()); processor.setTranslation(tx.getValue().doubleValue(), ty.getValue().doubleValue()); if (debug.getValue()) { PSDebugger debugger = new PSDebugger(); processor.attach(debugger); debugger.showInFrame(); processor.reset(); } else { processor.process(); } } catch (FileNotFoundException fnfe) { System.err.println("File: '"+name+"' cannot be found."); System.exit(1); } } }