1# Some utilities.
2
3# converttomovietime --
4#
5#       Ex: converttomovietime .m 00:01:20.50
6#           one minute, 20 seconds, and 50 hundreds of a second.
7# Arguments:
8#       movie       the movie widget.
9#       timehms     time in format HH:MM:SS.00
10# Results:
11#       the corresponding movie time.
12
13proc converttomovietime {movie timehms} {
14
15    array set timearr [$movie gettime]
16    set time [split $timehms ":"]
17    if {[llength $time] < 3} {
18	error "Usage: \"converttomovietime moviePath HH:MM:SS.00\""
19    }
20    set outtime [expr 60*60*[lindex $time 0]]
21    set outtime [expr $outtime + 60 *[lindex $time 1]]
22    set outtime [expr $outtime + [lindex $time 2]]
23    return [expr int($outtime * $timearr(-movietimescale))]
24}
25
26# converttohmstime --
27#
28#       Ex: converttohmstime .m 632718 => 0:17:34.53
29# Arguments:
30#       movie       the movie widget.
31#       timemovie   the time in movies time scale.
32# Results:
33#       time in format HH:MM:SS.00.
34
35proc converttohmstime {movie timemovie} {
36
37    array set timearr [$movie gettime]
38    set hunsecs [format {%02i}    \
39      [expr 100 * ($timemovie % $timearr(-movietimescale))/ \
40      $timearr(-movietimescale)]]
41    set totsecs [expr $timemovie/$timearr(-movietimescale)]
42    set totmins [expr $totsecs/60]
43    set tothours [expr $totmins/60]
44    set secs [format {%02i} [expr $totsecs % 60]]
45    set mins [format {%02i} [expr $totmins % 60]]
46
47    return "${tothours}:${mins}:${secs}.${hunsecs}"
48}
49