12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /**
- * Parse the d property of an SVG path into an array of drawing commands.
- * @param {String} d SvgPath d attribute.]
- * @return {Array} an array of drawing commands.
- */
- export function parseSvgPath(d) { //jshint ignore:line
- 'use strict';
- var commands = [];
- var commandTokens = ['M','L','I','H','V','C','S','Q','T','A'];
- var command;
- var in_x = false;
- var in_y = false;
- var x = '';
- var y = '';
- for(var i = 0; i <= d.length; i++) {
- if (commandTokens.indexOf(d[i]) !== -1) {
- if (in_x || in_y) {
- commands.push({command: command, x: x, y: y});
- x = '';
- y = '';
- }
- command = d[i];
- in_x = true;
- in_y = false;
- }
- else {
- if (d[i] === ',') {
- if (in_y) {
- commands.push({command: command, x: x, y: y});
- x = '';
- y = '';
- }
- in_x = !in_x;
- in_y = !in_y;
- }
- else if (in_x) {
- x += d[i];
- }
- else if (in_y) {
- y += d[i];
- }
- }
- }
- if (d[i] !== ',' && in_y) {
- commands.push({command: command, x: x, y: y});
- }
- return commands;
- }
|