svg-path-d
Version:
SVG path data (path[d] attribute content) manipulation library.
76 lines • 3.39 kB
JavaScript
;
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