home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 February / PCWorld_2002-02_cd.bin / Software / Vyzkuste / pdflib / pdflib-4.0.1.sit / pdflib-4.0.1 / bind / java / pdfclock.java < prev    next >
Encoding:
Java Source  |  2001-07-04  |  2.5 KB  |  112 lines  |  [TEXT/javc]

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