UNPKG

svg-path-d

Version:

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

76 lines 3.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.promoteToCurve = exports.promoteToQCurve = exports.promoteToLine = exports.canPromoteToCurve = exports.canPromoteToQCurve = exports.canPromoteToLine = void 0; var command_assertion_1 = require("./command-assertion"); var curve_node_1 = require("./curve-node"); var path_node_1 = require("./path-node"); function canPromoteToLine(item) { return command_assertion_1.isHLineTo(item) || command_assertion_1.isVLineTo(item); } exports.canPromoteToLine = canPromoteToLine; function canPromoteToQCurve(item) { return canPromoteToLine(item) || command_assertion_1.isLineTo(item) || command_assertion_1.isSmoothQCurveTo(item); } exports.canPromoteToQCurve = canPromoteToQCurve; function canPromoteToCurve(item) { return canPromoteToQCurve(item) || command_assertion_1.isQCurveTo(item) || command_assertion_1.isSmoothCurveTo(item); } exports.canPromoteToCurve = canPromoteToCurve; function promoteToLine(item) { return { name: 'L', x: path_node_1.getX(item), y: path_node_1.getY(item), prev: item.prev }; } exports.promoteToLine = promoteToLine; function promoteToQCurve(item) { var prev = item.prev; if (command_assertion_1.isSmoothQCurveTo(item)) { var x1 = curve_node_1.getReflectedX1(item); var y1 = curve_node_1.getReflectedY1(item); return { name: 'Q', x1: x1, y1: y1, x: item.x, y: item.y, prev: prev }; } else { // Treat it as a line. var x0 = path_node_1.getX(prev); var y0 = path_node_1.getY(prev); var x = path_node_1.getX(item); var y = path_node_1.getY(item); var x1 = (x0 + x) / 2; var y1 = (y0 + y) / 2; return { name: 'Q', x1: x1, y1: y1, x: x, y: y, prev: prev }; } } exports.promoteToQCurve = promoteToQCurve; function promoteToCurve(item) { var prev = item.prev; if (command_assertion_1.isSmoothCurveTo(item)) { var x1 = curve_node_1.getReflectedX1(item); var y1 = curve_node_1.getReflectedY1(item); return { name: 'C', x1: x1, y1: y1, x2: item.x2, y2: item.y2, x: item.x, y: item.y, prev: prev }; } else { var x0 = path_node_1.getX(prev); var y0 = path_node_1.getY(prev); if (command_assertion_1.isQCurveTo(item) || command_assertion_1.isSmoothQCurveTo(item)) { var control2x = 2 * curve_node_1.getFirstControlX(item); var control2y = 2 * curve_node_1.getFirstControlY(item); // 1/3rd start + 2/3rd control var x1 = (x0 + control2x) / 3; var y1 = (y0 + control2y) / 3; // 1/3rd stop + 2/3rd control var x2 = (item.x + control2x) / 3; var y2 = (item.y + control2y) / 3; return { name: 'C', x1: x1, y1: y1, x2: x2, y2: y2, x: item.x, y: item.y, prev: prev }; } else { // Treat it as a line. var x = path_node_1.getX(item); var y = path_node_1.getY(item); var x1 = x0 + (x - x0) / 4; // (x + 2 * x0) / 3 var y1 = y0 + (y - y0) / 4; // (y + 2 * y0) / 3 var x2 = x0 + (3 * (x - x0)) / 4; // (x0 + 2 * x) / 3 var y2 = y0 + (3 * (y - y0)) / 4; // (y0 + 2 * y) / 3 return { name: 'C', x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y, prev: prev }; } } } exports.promoteToCurve = promoteToCurve; //# sourceMappingURL=promoter.js.map