/compass/005_compass/compass/node_modules/gm/index.js |
@@ -0,0 +1,129 @@ |
|
/** |
* Module dependencies. |
*/ |
|
var Stream = require('stream').Stream; |
var EventEmitter = require('events').EventEmitter; |
var util = require('util'); |
|
util.inherits(gm, EventEmitter); |
|
/** |
* Constructor. |
* |
* @param {String|Number} path - path to img source or ReadableStream or width of img to create |
* @param {Number} [height] - optional filename of ReadableStream or height of img to create |
* @param {String} [color] - optional hex background color of created img |
*/ |
|
function gm (source, height, color) { |
var width; |
|
if (!(this instanceof gm)) { |
return new gm(source, height, color); |
} |
|
EventEmitter.call(this); |
|
this._options = {}; |
this.options(this.__proto__._options); |
|
this.data = {}; |
this._in = []; |
this._out = []; |
this._outputFormat = null; |
this._subCommand = 'convert'; |
|
if (source instanceof Stream) { |
this.sourceStream = source; |
source = height || 'unknown.jpg'; |
} else if (Buffer.isBuffer(source)) { |
this.sourceBuffer = source; |
source = height || 'unknown.jpg'; |
} else if (height) { |
// new images |
width = source; |
source = ""; |
|
this.in("-size", width + "x" + height); |
|
if (color) { |
this.in("xc:"+ color); |
} |
} |
|
if (typeof source === "string") { |
// then source is a path |
|
// parse out gif frame brackets from filename |
// since stream doesn't use source path |
// eg. "filename.gif[0]" |
var frames = source.match(/(\[.+\])$/); |
if (frames) { |
this.sourceFrames = source.substr(frames.index, frames[0].length); |
source = source.substr(0, frames.index); |
} |
} |
|
this.source = source; |
|
this.addSrcFormatter(function (src) { |
// must be first source formatter |
|
var inputFromStdin = this.sourceStream || this.sourceBuffer; |
var ret = inputFromStdin ? '-' : this.source; |
|
if (ret && this.sourceFrames) ret += this.sourceFrames; |
|
src.length = 0; |
src[0] = ret; |
}); |
} |
|
/** |
* Subclasses the gm constructor with custom options. |
* |
* @param {options} options |
* @return {gm} the subclasses gm constructor |
*/ |
|
var parent = gm; |
gm.subClass = function subClass (options) { |
function gm (source, height, color) { |
if (!(this instanceof parent)) { |
return new gm(source, height, color); |
} |
|
parent.call(this, source, height, color); |
} |
|
gm.prototype.__proto__ = parent.prototype; |
gm.prototype._options = {}; |
gm.prototype.options(options); |
|
return gm; |
} |
|
/** |
* Augment the prototype. |
*/ |
|
require("./lib/options")(gm.prototype); |
require("./lib/getters")(gm); |
require("./lib/args")(gm.prototype); |
require("./lib/drawing")(gm.prototype); |
require("./lib/convenience")(gm.prototype); |
require("./lib/command")(gm.prototype); |
require("./lib/compare")(gm.prototype); |
require("./lib/composite")(gm.prototype); |
require("./lib/montage")(gm.prototype); |
|
/** |
* Expose. |
*/ |
|
module.exports = exports = gm; |
module.exports.utils = require('./lib/utils'); |
module.exports.compare = require('./lib/compare')(); |
module.exports.version = require('./package.json').version; |