Show
Ignore:
Timestamp:
02/03/08 21:50:54 (7 years ago)
Author:
ryugate
Message:

TimecodeFactory?.scala merged to Timecode.scala

Location:
lang/scala/sandbox/src/jp/ryugate/video
Files:
1 removed
1 modified

Legend:

Unmodified
Added
Removed
  • lang/scala/sandbox/src/jp/ryugate/video/Timecode.scala

    r5806 r6119  
    33import jp.ryugate.text.Format 
    44 
    5 class Timecode(frames:int) { 
    6   class Tcode(hh:int, mm:int, ss:int, ff:int) { 
    7     def hour = hh 
    8     def minutes = mm 
    9     def second = ss 
    10     def frame = ff 
    11  
    12     override def toString() = Format.sprintf("%02d:%02d:%02d.%02d", hh,mm,ss,ff) 
     5object Timecode { 
     6  class TimecodeFactory(rate:Any) { 
     7    def make(hh:int, mm:int, ss:int, ff:int) = rate match { 
     8      case "ntsc" => 
     9        val minutes = hh * 60 + mm 
     10        new Timecode(17982 * (minutes/10) + 1798 * (minutes%10) + ss * 30 + ff) 
     11      case r:Int => 
     12        val mrate = r * 60 
     13        val hrate = mrate * 60 
     14        new Timecode(hh * hrate + mm * mrate + ss * r + ff) 
     15    } 
    1316  } 
    1417 
    15   def ntsc():Tcode = 
    16     new Tcode(frames / 17982 / 6, 
    17               frames / 17982 % 6 * 10 + (frames % 17982 - 2) / 1798, 
    18               ((frames % 17982 - 2) % 1798 + 2) / 30, 
    19               ((frames % 17982 - 2) % 1798 + 2) % 30 
    20             ) 
     18  class Timecode(frames:int) { 
     19    class Tcode(hh:int, mm:int, ss:int, ff:int) { 
     20      def hour = hh 
     21      def minutes = mm 
     22      def second = ss 
     23      def frame = ff 
     24   
     25      override def toString() = Format.sprintf("%02d:%02d:%02d.%02d", hh,mm,ss,ff) 
     26    } 
    2127 
    22   def tc():Tcode = tc(30) 
    23   def tc(rate:int):Tcode = { 
    24     val m = rate * 60 
    25     val h = m * 60 
    26     new Tcode(frames / h, 
    27               (frames % h) / m, 
    28               ((frames % h) % m) / rate, 
    29               ((frames % h) % m) % rate 
    30             ) 
     28    def ntsc = 
     29      new Tcode(frames / 17982 / 6, 
     30                frames / 17982 % 6 * 10 + (frames % 17982 - 2) / 1798, 
     31                ((frames % 17982 - 2) % 1798 + 2) / 30, 
     32                ((frames % 17982 - 2) % 1798 + 2) % 30 
     33              ) 
     34 
     35    def tc:Tcode = tc(30) 
     36    def tc(rate:int):Tcode = { 
     37      val m = rate * 60 
     38      val h = m * 60 
     39      new Tcode(frames / h, 
     40                (frames % h) / m, 
     41                ((frames % h) % m) / rate, 
     42                ((frames % h) % m) % rate 
     43              ) 
     44    } 
    3145  } 
    3246} 
    33