1234567891011121314151617181920212223242526 |
- // v1.0 exported just the parser function. To maintain backwards compatibility,
- // we export additional named features as properties of that function.
- var parserFunction = require('./parser.js').parse;
- parserFunction.parseSVG = parserFunction;
- parserFunction.makeAbsolute = makeSVGPathCommandsAbsolute;
- module.exports = parserFunction;
- function makeSVGPathCommandsAbsolute(commands) {
- var subpathStart, prevCmd={x:0,y:0};
- var attr = {x:'x0',y:'y0',x1:'x0',y1:'y0',x2:'x0',y2:'y0'};
- commands.forEach(function(cmd) {
- if (cmd.command==='moveto') subpathStart=cmd;
- cmd.x0=prevCmd.x; cmd.y0=prevCmd.y;
- for (var a in attr) if (a in cmd) cmd[a] += cmd.relative ? cmd[attr[a]] : 0;
- if (!('x' in cmd)) cmd.x = prevCmd.x; // V
- if (!('y' in cmd)) cmd.y = prevCmd.y; // X
- cmd.relative = false;
- cmd.code = cmd.code.toUpperCase();
- if (cmd.command=='closepath') {
- cmd.x = subpathStart.x;
- cmd.y = subpathStart.y;
- }
- prevCmd = cmd;
- });
- return commands;
- }
|