UNPKG

svg-path-d

Version:

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

45 lines 1.81 kB
"use strict"; 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