|
Home - Old Man Programmer
| Displaying webapps/vt100/script//conv.js
#!/usr/local/bin/node
const fs = require('fs');
const term = require('./vt100-fb');
if (process.argv.length < 5) {
console.log("Usage: conv.js <width>x<height> <script file> <timing file> [<audio file>]");
process.exit(0);
}
var size = process.argv[2];
var script = process.argv[3];
var timing = process.argv[4];
var audio = (process.argv[5] != undefined)? process.argv[5] : null;
var dim = size.split("x");
var sz = [ parseInt(dim[0]), parseInt(dim[1]) ];
var sdata = fs.readFileSync(script, "ascii");
var tdata = fs.readFileSync(timing, "ascii");
for(var i=0; sdata[i] != '\n'; i++);
sdata = sdata.substr(i);
tdata = tdata.split("\n");
var td = [];
for(var i = 0; i < tdata.length; i++) {
if (tdata[i].length == 0) break;
var l = tdata[i].split(" ");
td[i] = [parseFloat(l[0]), parseInt(l[1])];
}
term.terminal.init(sz[0], sz[1]);
var sp = 0, kf = [];
var lastkf = 0, ttime = 0;
kf.push({ts: 0, td: 0, sp: 0, ms: td[0][0] * 1000, frame: term.terminal.dumpstate()});
for(var i = 0; i < td.length; i++) {
var ms = 1000 * td[i][0];
var nc = td[i][1];
ttime += ms;
while((ttime - lastkf) >= 1000) {
lastkf += 1000;
kf.push({ts: lastkf, td: i, sp: sp, ms: parseInt(ttime - lastkf), frame: term.terminal.dumpstate()});
}
term.terminal.addstr(sdata.substr(sp, nc));
sp += nc;
}
ttime = ttime / 1000;
var head = { ttime: ttime, size: sz, script: sdata, timing: td, kf: kf };
if (audio) head['audio'] = audio;
console.log(JSON.stringify(head));
|