| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 'use strict';var util = require('util');var Stream = require('stream');var constants = require('./constants');var Packer = require('./packer');var PackerAsync = module.exports = function(opt) {  Stream.call(this);  var options = opt || {};  this._packer = new Packer(options);  this._deflate = this._packer.createDeflate();  this.readable = true;};util.inherits(PackerAsync, Stream);PackerAsync.prototype.pack = function(data, width, height, gamma) {  // Signature  this.emit('data', new Buffer(constants.PNG_SIGNATURE));  this.emit('data', this._packer.packIHDR(width, height));  if (gamma) {    this.emit('data', this._packer.packGAMA(gamma));  }  var filteredData = this._packer.filterData(data, width, height);  // compress it  this._deflate.on('error', this.emit.bind(this, 'error'));  this._deflate.on('data', function(compressedData) {    this.emit('data', this._packer.packIDAT(compressedData));  }.bind(this));  this._deflate.on('end', function() {    this.emit('data', this._packer.packIEND());    this.emit('end');  }.bind(this));  this._deflate.end(filteredData);};
 |