5 # From tclock.c, Copyright Howard Jones <ha.jones@ic.ac.uk>, September 1994.
16 def A2XY(angle
, radius
):
17 return int(round(ASPECT
* radius
* sin(angle
))), int(round(radius
* cos(angle
)))
20 stdscr
.addch(y
, x
, col
)
22 # draw a diagonal line using Bresenham's algorithm
23 def dline(pair
, from_x
, from_y
, x2
, y2
, ch
):
24 if curses
.has_colors():
25 stdscr
.attrset(curses
.color_pair(pair
))
71 my_bg
= curses
.COLOR_BLACK
76 if curses
.has_colors():
77 curses
.init_pair(1, curses
.COLOR_RED
, my_bg
)
78 curses
.init_pair(2, curses
.COLOR_MAGENTA
, my_bg
)
79 curses
.init_pair(3, curses
.COLOR_GREEN
, my_bg
)
81 cx
= (curses
.COLS
- 1) / 2
83 ch
= min( cy
-1, int(cx
/ ASPECT
) - 1)
84 mradius
= (3 * ch
) / 4
88 for i
in range(0, 12):
89 sangle
= (i
+ 1) * 2.0 * pi
/ 12.0
90 sdx
, sdy
= A2XY(sangle
, sradius
)
92 stdscr
.addstr(cy
- sdy
, cx
+ sdx
, "%d" % (i
+ 1))
95 "ASCII Clock by Howard Jones <ha.jones@ic.ac.uk>, 1994")
97 sradius
= max(sradius
-4, 8)
103 t
= time
.localtime(tim
)
105 hours
= t
[3] + t
[4] / 60.0
109 mangle
= t
[4] * 2 * pi
/ 60.0
110 mdx
, mdy
= A2XY(mangle
, mradius
)
112 hangle
= hours
* 2 * pi
/ 12.0
113 hdx
, hdy
= A2XY(hangle
, hradius
)
115 sangle
= t
[5] * 2 * pi
/ 60.0
116 sdx
, sdy
= A2XY(sangle
, sradius
)
118 dline(3, cx
, cy
, cx
+ mdx
, cy
- mdy
, ord('#'))
120 stdscr
.attrset(curses
.A_REVERSE
)
121 dline(2, cx
, cy
, cx
+ hdx
, cy
- hdy
, ord('.'))
122 stdscr
.attroff(curses
.A_REVERSE
)
124 if curses
.has_colors():
125 stdscr
.attrset(curses
.color_pair(1))
127 plot(cx
+ sdx
, cy
- sdy
, ord('O'))
129 if curses
.has_colors():
130 stdscr
.attrset(curses
.color_pair(0))
132 stdscr
.addstr(curses
.LINES
- 2, 0, time
.ctime(tim
))
134 if (t
[5] % 5) == 0 and t
[5] != lastbeep
:
142 plot(cx
+ sdx
, cy
- sdy
, ord(' '))
143 dline(0, cx
, cy
, cx
+ hdx
, cy
- hdy
, ord(' '))
144 dline(0, cx
, cy
, cx
+ mdx
, cy
- mdy
, ord(' '))