#include <cairo.h>
#include <math.h>
#include <stdlib.h>
void
sub(const int hour, const int min, const int second)
{
   double x, y, rad, h, m;
   int i;

   m = min + second / 60.0;
   h = hour + m / 60.0;

   cairo_surface_t *surface =
         cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 200, 200);
   cairo_t *cr =
         cairo_create(surface);

   cairo_set_line_width(cr, 3.0);
   cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);

   cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); /* white */

   cairo_arc(cr, 100, 100, 80, 0, 2 * M_PI);
   cairo_fill(cr);

   cairo_set_source_rgb(cr, 0.8, 0.0, 0.0); /* red */

   /* hour */
   rad = (h / 12.0 - 1/4.0) * (2 * M_PI);
   x = 40 * cos(rad);
   y = 40 * sin(rad);
   cairo_move_to(cr, 100.0,     100.0);
   cairo_line_to(cr, 100.0 + x, 100.0 + y);
   cairo_set_line_width(cr, 9.0);
   cairo_stroke(cr);

   cairo_set_source_rgba(cr, 0.0, 0.8, 0.0, 0.7); /* half-opaque green */

   /* minute */
   rad = (m / 60.0 - 1/4.0) * (2 * M_PI);
   x = 60 * cos(rad);
   y = 60 * sin(rad);
   cairo_move_to(cr, 100.0,     100.0);
   cairo_line_to(cr, 100.0 + x, 100.0 + y);
   cairo_set_line_width(cr, 6.0);
   cairo_stroke(cr);

   cairo_set_source_rgb(cr, 0.8, 0.0, 0.0); /* red */

   for (i = 0; i < 12; i++) {
      rad = (i / 12.0 - 1/4.0) * (2 * M_PI);
      x = 70 * cos(rad);
      y = 70 * sin(rad);
      cairo_move_to(cr, 100.0 + x, 100.0 + y);
      x *= 75 / 70.0;
      y *= 75 / 70.0;
      cairo_line_to(cr, 100.0 + x, 100.0 + y);
      cairo_set_line_width(cr, 6.0);
      cairo_stroke(cr);
   }

   cairo_destroy(cr);
   cairo_surface_write_to_png(surface, "hello.png");
   cairo_surface_destroy(surface);
}

int
main(int argc, char **argv)
{
   int h = 0, m = 0, s = 0;

   if (argc > 1) h = atoi(argv[1]);
   if (argc > 2) m = atoi(argv[2]);
   if (argc > 3) s = atoi(argv[3]);

   sub(h, m, s);
   return 0;
}