#!/bin/sh 
# \
exec wish8.0 "$0" "$@"
#
# $Log: mclock.tcl,v $
# Revision 1.1  1999/09/29 18:49:54  bernd
# Initial revision
#
#
#

set pos 93
set tcl_precision 4

set sizex 128
set sizey 128

set cx [expr $sizex / 2]
set cy [expr $sizey / 2]

set hour 0
set minute 0

wm resizable . 0 0

proc tick {} {
  global pos minute hour
  set s [ clock seconds]
   scan [clock format $s -format "%S" ] "%d" sec
  .c itemconfigure second -start [expr 93 - 6 * $sec]
  set m [clock format $s -format "%M" ]
  if {$m != $minute} {
    set minute $m
    set hour [clock format $s -format "%I" ]
    settime $hour $minute 
  }
  
  after 1000 {tick}  
}



canvas .c -width $sizex -height $sizey  -bg #f0f0f0 -relief sunken -bd 0

pack .c 


set cPointer red
set cRing    black
set cCenter  black
set cSecond  #2020f0

set nolines 4

set d 12

set t 8

set x1 $d
set y1 $d
set x2 [expr $sizex - $d]
set y2 [expr $sizey - $d]

set sx [expr ($x2 - $x1) / 2 ]
set sy [expr ($y2 - $y1) / 2 ]

proc alpha2coord { alpha radius} {
  global cx cy
  return "[expr cos($alpha) * $radius + $cx] [expr sin($alpha) * $radius + $cy]"
}


proc time2coords { hour minute } {
  global cx cy sx sy t
  scan $hour "%d" hour
  scan $minute "%d" minute
  set ah [expr (($hour - 3) + ($minute / 60.)) * 2 * 3.1415 / 12]
  set am [expr ($minute - 15) * 2 * 3.1415 / 60]
  return "[alpha2coord $ah [expr $sx - 3 * $t]]\
          $cx $cy [alpha2coord $am [expr $sx - 2 * $t]]"
} 

proc settime { hour minute } {
  set tc [time2coords $hour $minute]
  eval ".c coords pointer $tc"
  set tx [lindex $tc 0]
  set ty [lindex $tc 1]

  .c coords pMinute [expr $tx - 3] [expr $ty - 3]\
                    [expr $tx + 3] [expr $ty + 3] 

  set tx [lindex $tc 4]
  set ty [lindex $tc 5]

  .c coords pHour [expr $tx - 3] [expr $ty - 3]\
                    [expr $tx + 3] [expr $ty + 3] 
  
}


for {set i 0} { $i < $nolines } { incr i } {
  set g [expr $i * 2 * 3.1415 / $nolines ]
  .c create line [expr cos($g) * ($sx - $t ) + $cx]\
                 [expr sin($g) * ($sy - $t ) + $cy] \
                 [expr cos($g) * ($sx + $t ) + $cx] \
                 [expr sin($g) * ($sy + $t ) + $cy] -width 3 -fill $cRing
}


# Sekundenzeiger

.c create arc $x1 $y1 $x2 $y2 -style arc -start $pos -extent 354 -width 8 \
              -fill $cSecond -outline $cSecond -tags second 



set tc [time2coords 12 00]

eval ".c create line  $tc -width 3 -tags pointer -fill $cPointer"

.c create oval [expr $cx - $t] [expr $cy - $t]\
               [expr $cx + $t] [expr $cy + $t] -fill black

set tx [lindex $tc 0]
set ty [lindex $tc 1]

.c create oval [expr $tx - 3] [expr $ty - 3]\
               [expr $tx + 3] [expr $ty + 3] -fill black -tags pHour

set tx [lindex $tc 4]
set ty [lindex $tc 5]

.c create oval [expr $tx - 3] [expr $ty - 3]\
               [expr $tx + 3] [expr $ty + 3] -fill black -tags pMinute


after 1000 {tick}





