neo-blessed/test/widget-png.js

107 lines
2.0 KiB
JavaScript

var blessed = require('../');
var fs = require('fs');
var argv = {};
process.argv = process.argv.map(function(arg, i) {
if (/^--\w+=/.test(arg)) {
arg = arg.split('=');
if (/^[0-9.]+$/.test(arg[1])) arg[1] = +arg[1];
argv[arg[0].replace(/^--/, '')] = arg[1];
return;
}
if (arg.indexOf('--') === 0) {
arg = arg.slice(2);
argv[arg] = true;
return;
}
return arg;
}).filter(Boolean);
var screen = blessed.screen({
tput: true,
smartCSR: true,
dump: __dirname + '/logs/png.log'
});
var box1 = blessed.box({
parent: screen,
left: 4,
top: 3,
width: 10,
height: 6,
border: 'line',
style: {
bg: 'green'
},
content: fs.readFileSync(__dirname + '/lorem.txt', 'utf8')
});
var box2 = blessed.box({
parent: screen,
left: 20,
top: 8,
width: 40,
height: 15,
border: 'line',
style: {
bg: 'green'
},
content: fs.readFileSync(__dirname + '/lorem.txt', 'utf8')
});
var file = process.argv[2];
var testImage = __dirname + '/test-image.png';
var spinfox = __dirname + '/spinfox.png';
// XXX I'm not sure of the license of this file,
// so I'm not going to redistribute it in the repo.
var url = 'https://people.mozilla.org/~dolske/apng/spinfox.png';
if (!file) {
try {
if (!fs.existsSync(spinfox)) {
var buf = blessed.ansiimage.curl(url);
fs.writeFileSync(spinfox, buf);
}
file = spinfox;
} catch (e) {
file = testImage;
}
}
if (!argv.width && !argv.height && !argv.scale) {
argv.width = 20;
}
var png = blessed.image({
parent: screen,
// border: 'line',
width: argv.width,
height: argv.height,
top: 2,
left: 0,
file: file,
draggable: true,
type: 'ansi',
scale: argv.scale,
ascii: argv.ascii,
optimization: argv.optimization,
speed: argv.speed
});
screen.render();
screen.key('q', function() {
process.exit(0);
});
var timeout = setInterval(function() {
png.left++;
screen.render();
}, 100);
png.on('mousedown', function() {
clearInterval(timeout);
});