svg-path-d
Version:
SVG path data (path[d] attribute content) manipulation library.
45 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBoundingRect = exports.getItemBoundingRect = void 0;
var math2d_1 = require("./utils/math2d");
var arc_node_1 = require("./arc-node");
var curve_node_1 = require("./curve-node");
var path_node_1 = require("./path-node");
var command_assertion_1 = require("./command-assertion");
function getItemBoundingRect(item) {
if (command_assertion_1.isEllipticalArc(item)) {
return arc_node_1.getEllipticalArcBoundingRect(item);
}
else if (command_assertion_1.isQCurveTo(item) || command_assertion_1.isSmoothQCurveTo(item)) {
return curve_node_1.getQCurveBoundingRect(item);
}
else if (command_assertion_1.isCurveTo(item) || command_assertion_1.isSmoothCurveTo(item)) {
return curve_node_1.getCurveBoundingRect(item);
}
else {
var rc = math2d_1.fromPoint(path_node_1.getX(item), path_node_1.getY(item));
if (!command_assertion_1.isMoveTo(item)) {
// Treat everything else as a line segment.
math2d_1.addPoint(rc, path_node_1.getX(item.prev), path_node_1.getY(item.prev));
}
return rc;
}
}
exports.getItemBoundingRect = getItemBoundingRect;
function getBoundingRect(items, rect) {
if (!rect) {
rect = {
left: Number.POSITIVE_INFINITY,
top: Number.POSITIVE_INFINITY,
right: Number.NEGATIVE_INFINITY,
bottom: Number.NEGATIVE_INFINITY,
};
}
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
var item = items_1[_i];
math2d_1.addRect(rect, getItemBoundingRect(item));
}
return rect;
}
exports.getBoundingRect = getBoundingRect;
//# sourceMappingURL=bounding-rect.js.map