UNPKG

svg-path-d

Version:

SVG path data (path[d] attribute content) manipulation library.

76 lines 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromString = exports.asRelativeString = exports.asString = exports.formatParams = exports.getParams = void 0; var command_assertion_1 = require("./command-assertion"); var parser_1 = require("./parser"); var path_node_1 = require("./path-node"); var format_1 = require("./utils/format"); function getParams(item, buf) { if (!command_assertion_1.isClosePath(item)) { if (command_assertion_1.hasControlPoint1(item)) { buf.push(item.x1, item.y1); } if (command_assertion_1.hasControlPoint2(item)) { buf.push(item.x2, item.y2); } if (command_assertion_1.isEllipticalArc(item)) { buf.push(item.rx, item.ry, item.angle, item.largeArcFlag ? 1 : 0, item.sweepFlag ? 1 : 0); } if (!command_assertion_1.isVLineTo(item)) { buf.push(item.x); } if (!command_assertion_1.isHLineTo(item)) { buf.push(item.y); } } } exports.getParams = getParams; function formatParams(item, x0, y0, fractionDigits) { var buf = ''; if (!command_assertion_1.isClosePath(item)) { if (command_assertion_1.hasControlPoint1(item)) { buf += format_1.formatDigit(item.x1 - x0, fractionDigits); buf += format_1.formatDigit(item.y1 - y0, fractionDigits); } if (command_assertion_1.hasControlPoint2(item)) { buf += format_1.formatDigit(item.x2 - x0, fractionDigits); buf += format_1.formatDigit(item.y2 - y0, fractionDigits); } if (command_assertion_1.isEllipticalArc(item)) { buf += format_1.formatDigit(item.rx, fractionDigits); buf += format_1.formatDigit(item.ry, fractionDigits); buf += format_1.formatDigit(item.angle, fractionDigits); buf += ' ' + (item.largeArcFlag ? '1' : '0') + (item.sweepFlag ? '1' : '0'); } if (!command_assertion_1.isVLineTo(item)) { buf += format_1.formatDigit(item.x - x0, fractionDigits); } if (!command_assertion_1.isHLineTo(item)) { buf += format_1.formatDigit(item.y - y0, fractionDigits); } } return buf; } exports.formatParams = formatParams; // To string conversions: /** * Returns a string representing the draw command in absolute form. * @param item SVG path single draw command * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. */ function asString(item, fractionDigits) { if (fractionDigits === void 0) { fractionDigits = -1; } return item.name + formatParams(item, 0, 0, fractionDigits); } exports.asString = asString; function asRelativeString(item, fractionDigits) { if (fractionDigits === void 0) { fractionDigits = -1; } return item.name.toLowerCase() + formatParams(item, path_node_1.getX(item.prev), path_node_1.getY(item.prev), fractionDigits); } exports.asRelativeString = asRelativeString; function fromString(pathData) { var prev = undefined; return parser_1.getTokens(pathData).map(function (token) { return (prev = path_node_1.createPathNode(token.name, token.args, token.relative, prev)); }); } exports.fromString = fromString; //# sourceMappingURL=builder.js.map