package de.uniulm.mathematik.typo.items; import de.uniulm.mathematik.typo.afm.*; import java.io.*; public class TestRaggedRightFramedPar { public static void main(String[] args) { if (args.length != 5) { System.err.println("Usage: TestRaggedRightFramedPar font.afm size baselineskip parwidth first|best"); } else { try { FontMetrics fm = new AdobeFontMetrics(args[0]); int fontSize = (new Integer(args[1])).intValue(); int baselineskip = (new Integer(args[2])).intValue(); int parwidth = (new Integer(args[3])).intValue(); LineBreaker lb; String algorithm = args[4]; if (algorithm.equals("first")) { lb = new FirstFitLineBreaker(); } else if (algorithm.equals("best")) { lb = new BestFitLineBreaker(); } else { System.err.println("line breaker algorithm should be 'first' or 'best'; assuming 'first'"); lb = new FirstFitLineBreaker(); } lb.setLineWrapper(new RaggedRightWrapper(new FrameWrapper())); lb.setHorizontalBoxWrapper(new CombinedWrapper( new BaselineWrapper(), new FrameWrapper())); run(fm, fontSize, baselineskip * 1000, parwidth * 1000, lb, new BufferedReader(new InputStreamReader(System.in))); } catch (Exception e) { System.out.println("TestRaggedRightFramedPar: " + e.toString()); } } } // main private static void run(FontMetrics fm, int fontSize, int baselineskip, int parwidth, LineBreaker lb, BufferedReader in) { PostScriptContext context = new PostScriptContext(); HorizontalSequence hseq = new SimpleHorizontalSequence(); Sequencer s = new Sequencer(hseq, fm, fontSize); s.setWrapper(new FrameWrapper()); try { int ch; while ((ch = in.read()) >= 0) { s.add(ch); } s.finish(); // add breakpoint hseq.add(new FramedItem(new Penalty(0, false))); Item vbox = lb.breakParagraph(hseq, parwidth, baselineskip); vbox = new FramedItem(vbox); System.out.print(EPSWrapper.gen(context, vbox)); } catch (Exception e) { e.printStackTrace(); // System.out.println("Error: " + e.toString()); } } } // class TestRaggedRightFramedPar