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