package test.graph; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import org.das2.graph.DasAnnotation; import org.das2.graph.DasCanvas; import org.das2.graph.DasColumn; import org.das2.graph.DasPlot; import org.das2.graph.DasRow; import org.das2.util.awt.PdfGraphicsOutput; /** * * @author jbf */ public class GrannyTextDemo { JPanel contentPane; protected DasPlot plot; private synchronized JPanel getContentPane() { if (contentPane == null) { contentPane = new JPanel(); } return contentPane; } public JFrame showFrame() { JFrame frame= new JFrame( "Granny Text Demo"); frame.getContentPane().add(getContentPane()); frame.pack(); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.setVisible(true); return frame; } private void printCanvas(DasCanvas canvas) throws FileNotFoundException, IOException { PdfGraphicsOutput go = new PdfGraphicsOutput(); FileOutputStream out= new FileOutputStream(new File("/tmp/ap/jeremy.pdf") ); go.setGraphicsShapes( false ); go.setOutputStream(out); go.setSize( canvas.getWidth(), canvas.getHeight() ); go.start(); canvas.print(go.getGraphics()); go.finish(); } private Action getPrintAction( final DasCanvas c ) { return new AbstractAction("print") { @Override public void actionPerformed(ActionEvent e) { try { printCanvas(c); } catch (IOException ex) { Logger.getLogger(GrannyTextDemo.class.getName()).log(Level.SEVERE, null, ex); } } }; } public GrannyTextDemo(String text) { int width = 500; int height = 100; getContentPane().setLayout(new BorderLayout()); DasCanvas canvas = new DasCanvas(width, height); //canvas.setFont( Font.decode("Kalam-24") ); //canvas.setFont( Font.decode("Loma-24") ); //canvas.setFont( Font.decode("Laksaman-24") ); canvas.setFont( Font.decode("Roboto-24") ); getContentPane().add(canvas, BorderLayout.CENTER ); JButton button= new JButton(getPrintAction(canvas)); getContentPane().add(button, BorderLayout.SOUTH ); DasRow row= DasRow.create( canvas, null, "20%", "80%" ); DasColumn col= DasColumn.create( canvas, null, "20%", "80%" ); DasAnnotation anno= new DasAnnotation(text); anno.setFontSize(20.f); canvas.add( anno, row, col ); canvas.revalidate(); } public static void main( String[] args ) { //new GrannyTextDemo("!c!c!(underline)HELLO!(ununderline) There!").showFrame(); new GrannyTextDemo("Serif in ↑ 1917!c!cHELLO There!").showFrame(); } }