diff --git a/lib/canvas-svg/require.js b/lib/canvas-svg/require.js index 6dc0c56..b314fde 100644 --- a/lib/canvas-svg/require.js +++ b/lib/canvas-svg/require.js @@ -13,7 +13,7 @@ module.exports = function (dir) { throw new Error("Cannot find module " + org.join(", ") + "."); try { - return require(path) + return require(path); } catch (e) { if (e.message.slice(0,18) !== "Cannot find module") throw e; diff --git a/lib/node-canvas-svg.js b/lib/node-canvas-svg.js index 99d9884..d33728e 100644 --- a/lib/node-canvas-svg.js +++ b/lib/node-canvas-svg.js @@ -26,7 +26,21 @@ var check_canvg = function () { }; -exports.svg.render = function (svgdata/*, options, callback*/) { +var parse_data = function (data, type) { + if (type) + type = {contentType:type}; + + var elem = jsdom.jsdom(""+data+"",null,type).body; + + for(var i=0,l=elem.childNodes.length;i" + str + - "", null, {contentType:type}); - return {documentElement:patch.nodeName(doc.body.firstChild)}; - };}; + 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 obj = jsdom.jsdom("" + svgdata + ""); // FIXME meh :( - obj = obj.body.firstChild; - var canvas = new Canvas( - parseInt(obj.getAttribute('width')), - parseInt(obj.getAttribute('height'))); + var width, height; + if (args.length > 2) { + width = args.all[1]; + height = args.all[2]; + + } 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; + } + + var canvas = new Canvas(width, height); var options = {}; - if (args.length > 1) + if (args.length == 2 || args.length > 3) options = args.last; var defaults = {