You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
1.9 KiB

14 years ago
/*!
* Canvas
14 years ago
* Copyright (c) 2010 LearnBoost <tj@learnboost.com>
14 years ago
* MIT Licensed
*/
/**
* Module dependencies.
*/
var canvas = require('../build/default/canvas')
, Canvas = canvas.Canvas
, cairoVersion = canvas.cairoVersion
, Context2d = require('./context2d')
, PNGStream = require('./pngstream')
, fs = require('fs');
14 years ago
/**
* Export `Canvas` as the module.
*/
var Canvas = exports = module.exports = Canvas;
/**
* Library version.
*/
14 years ago
exports.version = '0.0.2';
14 years ago
/**
* Cairo version.
*/
exports.cairoVersion = cairoVersion;
/**
* Expose constructors.
*/
exports.Context2d = Context2d;
exports.PNGStream = PNGStream;
/**
* Context2d implementation.
*/
require('./context2d');
14 years ago
/**
* Inspect canvas.
*
* @return {String}
* @api public
*/
Canvas.prototype.inspect = function(){
return '[Canvas ' + this.width + ' ' + this.height + ']';
};
14 years ago
/**
* Get a context object.
*
* @param {String} contextId
* @return {Context2d}
* @api public
*/
Canvas.prototype.getContext = function(contextId){
if ('2d' == contextId) {
var ctx = new Context2d(this);
this.context = ctx;
ctx.canvas = this;
return ctx;
}
};
/**
* Create a `PNGStream` for `this` canvas.
*
* @return {PNGStream}
* @api public
*/
Canvas.prototype.createPNGStream = function(){
return new PNGStream(this);
};
/**
* Create a synchronous `PNGStream` for `this` canvas.
*
* @return {PNGStream}
* @api public
*/
Canvas.prototype.createSyncPNGStream = function(){
return new PNGStream(this, true);
};
/**
* Return a data url.
*
* @param {String} type
* @return {String}
* @api public
*/
Canvas.prototype.toDataURL = function(type){
14 years ago
// TODO: jpeg / svg / pdf :)
type = type || 'image/png';
if ('image/png' != type) throw new Error('currently only image/png is supported');
return 'data:' + type
+ ';base64,' + this.toBuffer().toString('base64');
};