summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2009-07-09 15:31:38 +0000
committerDimitri Sokolyuk <demon@dim13.org>2009-07-09 15:31:38 +0000
commit9366cc90b9547fa1e7d803576c23d9cbc5d74d38 (patch)
tree61757f9c6ef1c1f456c273acd8cc210b72b07cdc
aclock initial import
-rw-r--r--Makefile7
-rw-r--r--aclock.c107
2 files changed, 114 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..49aaf91
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+# $Id$
+
+PROG= aclock
+LDADD= -lcurses -lm
+NOMAN=
+
+. include <bsd.prog.mk>
diff --git a/aclock.c b/aclock.c
new file mode 100644
index 0000000..6cb7805
--- /dev/null
+++ b/aclock.c
@@ -0,0 +1,107 @@
+/* $Id$ */
+/*
+ * aclock - ascii clock for UNIX Console
+ *
+ * Copyright (c) 2002 Antoni Sawicki <tenox@tenox.tc>
+ * Version 1.8 (unix-curses); Dublin, June 2002
+ *
+ * Copmpilation: cc aclock-unix-curses.c -o aclock -lcurses -lm
+ *
+ */
+
+#include <unistd.h>
+#include <curses.h>
+#include <math.h>
+#include <time.h>
+
+void
+draw_circle(int hand_max, int sYcen, int sXcen, int FontHW)
+{
+ int x, y, r;
+ char c;
+
+ for (r = 0; r < 60; r++) {
+ x = cos(r * M_PI / 180 * 6) * hand_max * FontHW + sXcen;
+ y = sin(r * M_PI / 180 * 6) * hand_max + sYcen;
+ switch (r) {
+ case 0:
+ case 5:
+ case 10:
+ case 15:
+ case 20:
+ case 25:
+ case 30:
+ case 35:
+ case 40:
+ case 45:
+ case 50:
+ case 55:
+ c = 'o';
+ break;
+ default:
+ c = '.';
+ break;
+ }
+ mvaddch(y, x, c);
+ }
+}
+
+void
+draw_hand(int minute, int hlenght, char c, int sXcen, int sYcen, int FontHW)
+{
+ int x, y, n;
+ float r = (minute - 15) * (M_PI / 180) * 6;
+
+ for (n = 1; n < hlenght; n++) {
+ x = cos(r) * n * FontHW + sXcen;
+ y = sin(r) * n + sYcen;
+ mvaddch(y, x, c);
+ }
+}
+
+
+int
+main(void)
+{
+ char INFO[] = "Copyright (c) 2002 by Antek Sawicki <tenox@tenox.tc>\n"
+ "Version 1.8; Dublin, June 2002\n";
+ char digital_time[15];
+ int FontHW = 2;
+ int sXmax, sYmax, smax, hand_max, sXcen, sYcen;
+ time_t t;
+ struct tm *ltime;
+ initscr();
+
+ while (1) {
+ time(&t);
+ ltime = localtime(&t);
+ sXmax = COLS;
+ sYmax = LINES;
+
+ if (sXmax / 2 <= sYmax)
+ smax = sXmax / 2;
+ else
+ smax = sYmax;
+
+ hand_max = (smax / 2) - 1;
+
+ sXcen = sXmax / 2;
+ sYcen = sYmax / 2;
+
+ erase();
+ draw_circle(hand_max, sYcen, sXcen, FontHW);
+
+ draw_hand((ltime->tm_hour * 5) + (ltime->tm_min / 10), 2 * hand_max / 3, 'h', sXcen, sYcen, FontHW);
+ draw_hand(ltime->tm_min, hand_max - 2, 'm', sXcen, sYcen, FontHW);
+ draw_hand(ltime->tm_sec, hand_max - 1, '.', sXcen, sYcen, FontHW);
+
+ mvaddstr(sYmax / 4, sXcen - 5, ".:ACLOCK:.");
+ mvprintw(4 * sYmax / 5, sXcen - 5, "[%02d:%02d:%02d]", ltime->tm_hour, ltime->tm_min, ltime->tm_sec);
+
+ refresh();
+ sleep(1);
+ }
+ endwin();
+
+ return 0;
+}