1/* $Id: pdfclock.java 14574 2005-10-29 16:27:43Z bonefish $ 2 * 3 * PDFlib client: pdfclock example in Java 4 */ 5 6import java.io.*; 7import java.text.*; // SimpleDateFormat 8import java.util.*; // Date 9import com.pdflib.pdflib; 10import com.pdflib.PDFlibException; 11 12public class pdfclock 13{ 14 public static void main (String argv[]) 15 { 16 pdflib p = null; 17 int tm_hour, tm_min, tm_sec, alpha; 18 float RADIUS = 200.0f; 19 float MARGIN = 20.0f; 20 SimpleDateFormat format; 21 Date now = new Date(); 22 23 try{ 24 p = new pdflib(); 25 /* open new PDF file */ 26 if (p.open_file("pdfclock.pdf") == -1) { 27 throw new Exception("Error: " + p.get_errmsg()); 28 } 29 30 p.set_info("Creator", "pdfclock.java"); 31 p.set_info("Author", "Thomas Merz"); 32 p.set_info("Title", "PDF clock (Java)"); 33 34 p.begin_page( (int) (2 * (RADIUS + MARGIN)), 35 (int) (2 * (RADIUS + MARGIN))); 36 37 p.translate(RADIUS + MARGIN, RADIUS + MARGIN); 38 p.setcolor("fillstroke", "rgb", 0.0f, 0.0f, 1.0f, 0.0f); 39 p.save(); 40 41 // minute strokes 42 p.setlinewidth(2.0f); 43 for (alpha = 0; alpha < 360; alpha += 6) 44 { 45 p.rotate(6.0f); 46 p.moveto(RADIUS, 0.0f); 47 p.lineto(RADIUS-MARGIN/3, 0.0f); 48 p.stroke(); 49 } 50 51 p.restore(); 52 p.save(); 53 54 // 5 minute strokes 55 p.setlinewidth(3.0f); 56 for (alpha = 0; alpha < 360; alpha += 30) 57 { 58 p.rotate(30.0f); 59 p.moveto(RADIUS, 0.0f); 60 p.lineto(RADIUS-MARGIN, 0.0f); 61 p.stroke(); 62 } 63 64 format = new SimpleDateFormat("hh"); 65 tm_hour= Integer.parseInt(format.format(now)); 66 format = new SimpleDateFormat("mm"); 67 tm_min = Integer.parseInt(format.format(now)); 68 format = new SimpleDateFormat("ss"); 69 tm_sec = Integer.parseInt(format.format(now)); 70 71 // draw hour hand 72 p.save(); 73 p.rotate((-((tm_min/60.0f) + tm_hour - 3.0f) * 30.0f)); 74 p.moveto(-RADIUS/10, -RADIUS/20); 75 p.lineto(RADIUS/2, 0.0f); 76 p.lineto(-RADIUS/10, RADIUS/20); 77 p.closepath(); 78 p.fill(); 79 p.restore(); 80 81 // draw minute hand 82 p.save(); 83 p.rotate((-((tm_sec/60.0f) + tm_min - 15.0f) * 6.0f)); 84 p.moveto(-RADIUS/10, -RADIUS/20); 85 p.lineto(RADIUS * 0.8f, 0.0f); 86 p.lineto(-RADIUS/10, RADIUS/20); 87 p.closepath(); 88 p.fill(); 89 p.restore(); 90 91 // draw second hand 92 p.setcolor("fillstroke", "rgb", 1.0f, 0.0f, 0.0f, 0.0f); 93 p.setlinewidth(2); 94 p.save(); 95 p.rotate(-((tm_sec - 15.0f) * 6.0f)); 96 p.moveto(-RADIUS/5, 0.0f); 97 p.lineto(RADIUS, 0.0f); 98 p.stroke(); 99 p.restore(); 100 101 // draw little circle at center 102 p.circle(0f, 0f, RADIUS/30); 103 p.fill(); 104 105 p.restore(); 106 p.end_page(); 107 p.close(); 108 109 } catch (PDFlibException e) { 110 System.err.print("PDFlib exception occurred in pdfclock sample:\n"); 111 System.err.print("[" + e.get_errnum() + "] " + e.get_apiname() + 112 ": " + e.getMessage() + "\n"); 113 } catch (Exception e) { 114 System.err.println(e.getMessage()); 115 } finally { 116 if (p != null) { 117 p.delete(); /* delete the PDFlib object */ 118 } 119 } 120 } 121} 122