UNPKG

appshot

Version:

A command-line tool record gifs of apps on MacOS.

92 lines (80 loc) 2.14 kB
"use strict"; /** * update decoder: for (var i = 0; i < scanline.length; i++) { const val = scanline[i] if (val == this._frame.transparentColor) { res[p++] = -1 res[p++] = -1 res[p++] = -1 } else { var idx = scanline[i] * 3; res[p++] = this._palette[idx]; res[p++] = this._palette[idx + 1]; res[p++] = this._palette[idx + 2]; } } update encoder: GIFEncoder.prototype._writeGCE = function(frame) { var buf = new Buffer(8); var delay = (frame.delay || 50) / 10 | 0; var tc = frame.transparentColor || 0 buf[0] = 0x21; // extension block buf[1] = 0xf9; // graphic control extension buf[2] = 4; // block size buf[3] = 0; // flags buf.writeUInt16LE(delay, 4); // frame delay buf[6] = tc; // transparent color index buf[7] = 0; // block terminator this.push(buf); }; */ /* eslint-disable */ // unused class FrameStream extends Transform { constructor({ delay, file, repeatCount = Infinity }) { super({ objectMode: true }); this.delay = delay; this.encodeStream = new GIFEncoder({ repeatCount }); this.setup = false; this.file = file; this.i = 1; } _transform(frame, enc, next) { if (!this.setup) { LOG('Setting up encode stream'); const outputStream = getOutputStream(this.file).on('close', () => { this.push(null); }).on('error', error => { next(error); }); this.encodeStream.pipe(outputStream); this.encodeStream.on('error', err => { next(err); }).on('end frame', () => { LOG('written pixels'); this.emit('end frame', this.i); this.i++; next(); }); this.setup = true; } frame.delay = this.delay; this.encodeStream.addFrame(frame); LOG('writing frame %s', this.i); this.encodeStream.write(frame.pixels); } _end() { if (!this.setup) return; this.encodeStream.end(); } } //# sourceMappingURL=FrameStream.js.map