1# -*- tcl -*-
2# (C) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net>
3##
4# ###
5
6namespace eval ::sak::animate {}
7
8# ###
9
10proc ::sak::animate::init {} {
11    variable prefix
12    variable n      0
13    variable max    [llength $prefix]
14    variable extend 0
15}
16
17proc ::sak::animate::next {string} {
18    variable prefix
19    variable n
20    variable max
21    Extend string
22
23    puts -nonewline stdout \r\[[lindex $prefix $n]\]\ $string
24    flush           stdout
25
26    incr n ; if {$n >= $max} {set n 0}
27    return
28}
29
30proc ::sak::animate::last {string} {
31    variable clear
32    Extend string
33
34    puts  stdout \r\[$clear\]\ $string
35    flush stdout
36    return
37}
38
39# ###
40
41proc ::sak::animate::Extend {sv} {
42    variable extend
43    upvar 1 $sv string
44
45    set l [string length $string]
46    while {[string length $string] < $extend} {append string " "}
47    if {$l > $extend} {set extend $l}
48    return
49}
50
51# ###
52
53namespace eval ::sak::animate {
54    namespace export init next last
55
56    variable  prefix {
57	{*   }	{*   }	{*   }	{*   }	{*   }
58	{ *  }	{ *  }	{ *  }	{ *  }	{ *  }
59	{  * }	{  * }	{  * }	{  * }	{  * }
60	{   *}	{   *}	{   *}	{   *}	{   *}
61	{  * }	{  * }	{  * }	{  * }	{  * }
62	{ *  }	{ *  }	{ *  }	{ *  }	{ *  }
63    }
64    variable clear {    }
65}
66
67##
68# ###
69
70package provide sak::animate 1.0
71