From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4767E213.9070208@degood.org> Date: Tue, 18 Dec 2007 10:06:59 -0500 From: John DeGood User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [9fans] graphical clock demo at IWP9 Topicbox-Message-UUID: 1c3430c6-ead3-11e9-9d60-3106f5b1d025 Ron Minnich encouraged me to bring my incomplete little graphical clock program to IWP9, and then he encouraged me to complete it. So please blame Ron for this: http://degood.org/plan9/mclock.tar History of this clock program: in the 1970s Dave Robinson, an EE professor at UDel, wrote a cute graphical clock program in PDP-11 BASIC that displayed on a Tektronix vector graphics terminal in his lab. The clock image was drawn as vectors, with the filled areas composed of hundreds of side-by-side vectors. In 1982 I got a printout of the program from Dave, typed in all the vector coordinates, and then rewrote the program in FORTRAN for an HP 3000 timeshared minicomputer, outputting escape sequences to an HP 2648 raster graphics terminal in my lab. Flash forward ~25 years: I stumbled across a line printer listing (on green bar paper, of course) of my 1982 program in my basement, and on a whim decided to rewrite it in C for Plan 9 using draw(2). It looked very retro. I tried adding color, but it still wasn't satisfying because the hundreds of vectors used for area fill weren't compatible with variable size windows. So I tediously determined bounding polygons for each of the filled areas and called fillpoly() instead. Magic feature: when the clock diameter is > 600 pixels (e.g. fullscreen) the linewidth increases from thick=0 (1 pixel) to thick=1 (3 pixels) to make the clock more readable from a distance. Have fun. John