# $XConsortium: mtcircles,v 1.2 94/04/01 16:33:18 matt Exp $
#  This dish script draws two circles that change their sizes
#
#  Bugs:    1) Can't make tcl share one procedure (zoomer).
#   	    2) Can't assign different delta's and pauses.
#   	    3) Circle is not centered.

proc zoomer1 {{delta 0.02} {pause 0.1}} {
    global left
    set scale 1.0
    while {1} {
	delay pause
    	set scale [expr $scale - $delta]
    	if {$scale < 0.05 || $scale > 0.999999} {
    	    set delta [expr -$delta]
    	}
    	set t [left transform]
    	if {$t != 0} {
    	    set t $t
    	    t load_identity
    	    t scale "{scale scale scale}"
    	    left need_redraw
    	}
    }
}

proc zoomer2 {{delta 0.02} {pause 0.1}} {
    global right
    set scale 1.0
    while {1} {
	delay pause
    	set scale [expr $scale - $delta]
    	if {$scale < 0.05 || $scale > 0.999999} {
    	    set delta [expr -$delta]
    	}
    	set t [right transform]
    	if {$t != 0} {
    	    set t $t
    	    t load_identity
    	    t scale "{scale scale scale}"
    	    right need_redraw
    	}
    }
}

set circle [
    figure_kit figure_root [
	figure_kit circle 0 [ figure_kit default_style ] 0 0 100
    ]
]
set left [figure_kit group]
set right [figure_kit group]
set hbox [layout_kit hbox]
hbox append [figure_kit figure_root left]
hbox append [layout_kit hfil]
hbox append [figure_kit figure_root right]
left append circle
right append circle
spawn [action zoomer1 0.02 0.1]
spawn [action zoomer2 0.04 0.3]
main 0 hbox
