summaryrefslogtreecommitdiffstats
path: root/doc/seek.js
blob: 2f343b7c2eadb5953de5297b74d48768970b8a64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var curframe=-1;
var mode=0;
var base_url="/";

function show(foo) {
  document.getElementById(foo).style.display = "block";
}

function hide(foo) {
  document.getElementById(foo).style.display = "none";
}

function updateText (elemid, val) {
  var tn = document.createTextNode(val);
  document.getElementById(elemid).replaceChild(tn, document.getElementById(elemid).firstChild);
}

function PadDigits(n, totalDigits) {
  n = n.toString();
  var pd = '';
  if (totalDigits > n.length) {
    for (i=0; i < (totalDigits-n.length); i++) { pd += '0'; }
  }
  return pd + n.toString();
}

function settc(f) {
  var fpsi = Math.ceil(fps);
  var hour,min,sec,frame, s;
  if (Math.floor(fps * 100) == 2997) {
    var D = Math.floor(f / 17982);
    var M = f % 17982;
    var n = f + 18 * D + 2 * Math.floor((M - 2) / 1798);
    s = Math.floor(n/30);
    frame = Math.floor(n%30);
  } else {
    s = Math.floor(f/fpsi);
    frame = f%fpsi;
  }
  hour  = Math.floor(s/3600);
  min   = Math.floor(s/60)%60;
  sec   = Math.floor(s%60);
  updateText('frame', PadDigits(frame, 2));
  updateText('sec',   PadDigits(sec, 2));
  updateText('min',   PadDigits(min, 2));
  updateText('hour',  PadDigits(hour, 2));
}

function seek(i, f) {
  if (curframe == f) return;
  curframe = f;
  document.getElementById('sframe').src=base_url+'?file='+i+'&frame='+f+'&w=-1&h=300&format=jpeg60';
}

function setslider(frame) {
  var val = 1 + Math.round(500.0 * frame / lastframe);
  if (val < 1 || val > 501) return;
  document.getElementById('knob').style.width = val+'px';
}

function movestep(e) {
  var mouse_x = e.clientX;
  var xoff = document.getElementById('slider').offsetLeft;
  var spos = mouse_x - xoff;
  if (mode == 1) {
    spos = Math.floor(spos/5) * 5;
  }
  if (spos < 0 ) spos = 0;
  if (spos > 500 ) spos = 500;
  var frame = Math.round(spos * lastframe / 500.0);
  if (frame == curframe) return;
  setslider(frame);
  settc(frame);
  seek(fileid, frame);
}

function smode(m) {
  if (m == 1) {
    hide('stepper_setup');
    show('stepper_active');
    mode = 1;
    document.getElementById('slider').onmousemove = movestep;
  } else {
    show('stepper_setup');
    hide('stepper_active');
    mode = 0;
    document.getElementById('slider').onmousemove = null;
  }
}