index.js 969 B

1234567891011121314151617181920212223242526
  1. // v1.0 exported just the parser function. To maintain backwards compatibility,
  2. // we export additional named features as properties of that function.
  3. var parserFunction = require('./parser.js').parse;
  4. parserFunction.parseSVG = parserFunction;
  5. parserFunction.makeAbsolute = makeSVGPathCommandsAbsolute;
  6. module.exports = parserFunction;
  7. function makeSVGPathCommandsAbsolute(commands) {
  8. var subpathStart, prevCmd={x:0,y:0};
  9. var attr = {x:'x0',y:'y0',x1:'x0',y1:'y0',x2:'x0',y2:'y0'};
  10. commands.forEach(function(cmd) {
  11. if (cmd.command==='moveto') subpathStart=cmd;
  12. cmd.x0=prevCmd.x; cmd.y0=prevCmd.y;
  13. for (var a in attr) if (a in cmd) cmd[a] += cmd.relative ? cmd[attr[a]] : 0;
  14. if (!('x' in cmd)) cmd.x = prevCmd.x; // V
  15. if (!('y' in cmd)) cmd.y = prevCmd.y; // X
  16. cmd.relative = false;
  17. cmd.code = cmd.code.toUpperCase();
  18. if (cmd.command=='closepath') {
  19. cmd.x = subpathStart.x;
  20. cmd.y = subpathStart.y;
  21. }
  22. prevCmd = cmd;
  23. });
  24. return commands;
  25. }