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