Skip to content

Commit

Permalink
rewrite render function
Browse files Browse the repository at this point in the history
  • Loading branch information
dodo committed Dec 2, 2010
1 parent e29e6b2 commit 2a7d73a
Showing 1 changed file with 47 additions and 36 deletions.
83 changes: 47 additions & 36 deletions lib/node-canvas-svg.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,49 +40,57 @@ var parse_data = function (data, type) {
};


exports.svg.render = function (svgdata/*, width, height, options, callback*/) {
exports.svg.render = function (/*canvas, svgdata, width, height, options, callback*/) {
check_canvg();
var args = new Vargs(arguments);
if (!svgdata)
return args.callback(new Error("no svg given"), new Canvas(42, 42));

var doc = jsdom.jsdom(),
win = doc.createWindow(),
DOMParser = function () {
this.parseFromString = function (data, type) {
var res = parse_data(data, type);
//if (/*err*/res[0]) ### /*ignored*/ ###
// throw res[0];
return { documentElement : patch.nodeName(res[1]) };
};
};
win.DOMParser = true;

var width, height;
if (args.length > 2) {
width = args.all[1];
height = args.all[2];
var args = new Vargs(arguments),
arglist = args.all.slice(0);

var svgdata = "", canvas = null;
if (typeof args.first === 'string') {
svgdata = args.shift();
} else {
var res = parse_data(svgdata);
if (/*err*/res[0])
return args.callback(res[0], new Canvas(42, 42));
var elem = res[1];
svgdata = elem.outerHTML; // maybe cleaner

width = elem.hasAttribute('width') ?
parseInt(elem.getAttribute('width')) : 42;
height = elem.hasAttribute('height') ?
parseInt(elem.getAttribute('height')) : 42;
canvas = args.shift();
svgdata = args.shift();
}

var canvas = new Canvas(width, height);
if (!svgdata)
return args.callback(new Error("no svg given"), new Canvas(42, 42));

var options = {};
if (args.length == 2 || args.length > 3)
options = args.last;
if (!canvas) {
var doc = jsdom.jsdom(),
win = doc.createWindow(),
DOMParser = function () {
this.parseFromString = function (data, type) {
var res = parse_data(data, type);
//if (/*err*/res[0]) ### /*ignored*/ ###
// throw res[0];
return { documentElement : patch.nodeName(res[1]) };
};
};
win.DOMParser = true;

var width, height;
if (arglist.length > 1) {
width = arglist.shift();
height = arglist.shift();

} else {
var res = parse_data(svgdata);
if (/*err*/res[0])
return args.callback(res[0], new Canvas(42, 42));
var elem = res[1];
svgdata = elem.outerHTML; // maybe cleaner

width = elem.hasAttribute('width') ?
parseInt(elem.getAttribute('width')) : 42;
height = elem.hasAttribute('height') ?
parseInt(elem.getAttribute('height')) : 42;
}
canvas = new Canvas(width, height);
}

var defaults = {
var options = arglist ? args.last : {},
defaults = {
renderCallback : function () { args.callback(null, canvas) },
ignoreMouse: true,
ignoreAnimation: true,
Expand All @@ -105,5 +113,8 @@ exports.svg.render = function (svgdata/*, width, height, options, callback*/) {
}
};


exports.Canvas = Canvas;

exports.load = require('./canvas-svg/loader')(depdir, vargs, svg);

0 comments on commit 2a7d73a

Please sign in to comment.