1 line
76 KiB
JSON
1 line
76 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.typed-array.float32-array.js\";\nimport \"core-js/modules/es.typed-array.at.js\";\nimport \"core-js/modules/es.typed-array.copy-within.js\";\nimport \"core-js/modules/es.typed-array.every.js\";\nimport \"core-js/modules/es.typed-array.fill.js\";\nimport \"core-js/modules/es.typed-array.filter.js\";\nimport \"core-js/modules/es.typed-array.find.js\";\nimport \"core-js/modules/es.typed-array.find-index.js\";\nimport \"core-js/modules/es.typed-array.for-each.js\";\nimport \"core-js/modules/es.typed-array.includes.js\";\nimport \"core-js/modules/es.typed-array.index-of.js\";\nimport \"core-js/modules/es.typed-array.iterator.js\";\nimport \"core-js/modules/es.typed-array.join.js\";\nimport \"core-js/modules/es.typed-array.last-index-of.js\";\nimport \"core-js/modules/es.typed-array.map.js\";\nimport \"core-js/modules/es.typed-array.reduce.js\";\nimport \"core-js/modules/es.typed-array.reduce-right.js\";\nimport \"core-js/modules/es.typed-array.reverse.js\";\nimport \"core-js/modules/es.typed-array.set.js\";\nimport \"core-js/modules/es.typed-array.slice.js\";\nimport \"core-js/modules/es.typed-array.some.js\";\nimport \"core-js/modules/es.typed-array.sort.js\";\nimport \"core-js/modules/es.typed-array.subarray.js\";\nimport \"core-js/modules/es.typed-array.to-locale-string.js\";\nimport \"core-js/modules/es.typed-array.to-string.js\";\nimport \"core-js/modules/es.array.fill.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\n\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return n % 2 * PI;\n}\n\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n } else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n } else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n } else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\n\nvar PathProxy = function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n\n if (notSaveData) {\n this._saveData = false;\n }\n\n if (this._saveData) {\n this.data = [];\n }\n }\n\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n\n this._version++;\n };\n\n PathProxy.prototype.moveTo = function (x, y) {\n this._drawPendingPt();\n\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n\n PathProxy.prototype.lineTo = function (x, y) {\n var dx = mathAbs(x - this._xi);\n var dy = mathAbs(y - this._yi);\n var exceedUnit = dx > this._ux || dy > this._uy;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n this._pendingPtDist = 0;\n } else {\n var d2 = dx * dx + dy * dy;\n\n if (d2 > this._pendingPtDist) {\n this._pendingPtX = x;\n this._pendingPtY = y;\n this._pendingPtDist = d2;\n }\n }\n\n return this;\n };\n\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this._drawPendingPt();\n\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this._drawPendingPt();\n\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this._drawPendingPt();\n\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n this._drawPendingPt();\n\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n };\n\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._drawPendingPt();\n\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n\n PathProxy.prototype.closePath = function () {\n this._drawPendingPt();\n\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n\n PathProxy.prototype.len = function () {\n return this._len;\n };\n\n PathProxy.prototype.setData = function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n };\n\n PathProxy.prototype.appendPath = function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n };\n\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n\n PathProxy.prototype._drawPendingPt = function () {\n if (this._pendingPtDist > 0) {\n this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n this._pendingPtDist = 0;\n }\n };\n\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n };\n\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n\n this._drawPendingPt();\n\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n var l = -1;\n\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n\n case CMD.L:\n {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n\n break;\n }\n\n case CMD.C:\n {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n\n case CMD.Q:\n {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n\n case CMD.Z:\n {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n var pendingPtDist = 0;\n var pendingPtX;\n var pendingPtY;\n\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n\n if (!displayedLength) {\n return;\n }\n }\n\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n if (cmd !== CMD.L && pendingPtDist > 0) {\n ctx.lineTo(pendingPtX, pendingPtY);\n pendingPtDist = 0;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n {\n x = d[i++];\n y = d[i++];\n var dx = mathAbs(x - xi);\n var dy = mathAbs(y - yi);\n\n if (dx > ux || dy > uy) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n\n accumLength += l;\n }\n\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n pendingPtDist = 0;\n } else {\n var d2 = dx * dx + dy * dy;\n\n if (d2 > pendingPtDist) {\n pendingPtX = x;\n pendingPtY = y;\n pendingPtDist = d2;\n }\n }\n\n break;\n }\n\n case CMD.C:\n {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n\n accumLength += l;\n }\n\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n\n case CMD.Q:\n {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n\n accumLength += l;\n }\n\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = rx > ry ? rx : ry;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n\n accumLength += l;\n }\n\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n } else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n\n if (breakBuild) {\n break lo;\n }\n\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n\n d_1 -= height;\n\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n\n d_1 -= width;\n\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n\n break lo;\n }\n\n accumLength += l;\n }\n\n ctx.rect(x, y, width, height);\n break;\n\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n\n accumLength += l;\n }\n\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n\n PathProxy.prototype.clone = function () {\n var newProxy = new PathProxy();\n var data = this.data;\n newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data);\n newProxy._len = this._len;\n return newProxy;\n };\n\n PathProxy.CMD = CMD;\n\n PathProxy.initDefaultProps = function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._ux = 0;\n proto._uy = 0;\n proto._pendingPtDist = 0;\n proto._version = 0;\n }();\n\n return PathProxy;\n}();\n\nexport default PathProxy;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/zrender/lib/core/PathProxy.js"],"names":["vec2","BoundingRect","devicePixelRatio","dpr","fromLine","fromCubic","fromQuadratic","fromArc","cubicLength","cubicSubdivide","quadraticLength","quadraticSubdivide","CMD","M","L","C","Q","A","Z","R","tmpOutX","tmpOutY","min","max","min2","max2","mathMin","Math","mathMax","mathCos","cos","mathSin","sin","mathAbs","abs","PI","PI2","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","n","round","normalizeArcAngles","angles","anticlockwise","newStartAngle","delta","newEndAngle","PathProxy","notSaveData","_xi","_yi","_x0","_y0","_len","_saveData","data","prototype","increaseVersion","_version","getVersion","setScale","sx","sy","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","ctx","_ctx","getContext","beginPath","reset","_pathSegLen","_pathLen","moveTo","x","y","_drawPendingPt","addData","lineTo","dx","dy","exceedUnit","_pendingPtDist","d2","_pendingPtX","_pendingPtY","bezierCurveTo","x1","y1","x2","y2","x3","y3","quadraticCurveTo","arc","cx","cy","r","startAngle","endAngle","arcTo","radius","rect","w","h","closePath","x0","y0","fill","toStatic","stroke","len","setData","length","i","appendPath","path","Array","appendSize","offset","appendPathData","k","cmd","a","b","c","d","e","f","g","arguments","_expandData","newData","getBoundingRect","Number","MAX_VALUE","xi","yi","isFirst","rx","ry","width","height","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","l","sqrt","rebuildPath","percent","drawPart","accumLength","displayedLength","pendingPtDist","pendingPtX","pendingPtY","lo","t","psi","isEllipse","breakBuild","ellipse","d_1","clone","newProxy","slice","call","initDefaultProps","proto"],"mappings":"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","sourcesContent":["import * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n }\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n }\n else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n }\n else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n if (notSaveData) {\n this._saveData = false;\n }\n if (this._saveData) {\n this.data = [];\n }\n }\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n this._version++;\n };\n PathProxy.prototype.moveTo = function (x, y) {\n this._drawPendingPt();\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n PathProxy.prototype.lineTo = function (x, y) {\n var dx = mathAbs(x - this._xi);\n var dy = mathAbs(y - this._yi);\n var exceedUnit = dx > this._ux || dy > this._uy;\n this.addData(CMD.L, x, y);\n if (this._ctx && exceedUnit) {\n this._ctx.lineTo(x, y);\n }\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n this._pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > this._pendingPtDist) {\n this._pendingPtX = x;\n this._pendingPtY = y;\n this._pendingPtDist = d2;\n }\n }\n return this;\n };\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this._drawPendingPt();\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n if (this._ctx) {\n this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this._drawPendingPt();\n this.addData(CMD.Q, x1, y1, x2, y2);\n if (this._ctx) {\n this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this._drawPendingPt();\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n this._drawPendingPt();\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n return this;\n };\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._drawPendingPt();\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n PathProxy.prototype.closePath = function () {\n this._drawPendingPt();\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n if (ctx) {\n ctx.closePath();\n }\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n PathProxy.prototype.len = function () {\n return this._len;\n };\n PathProxy.prototype.setData = function (data) {\n var len = data.length;\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n this._len = len;\n };\n PathProxy.prototype.appendPath = function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n if (hasTypedArray && (this.data instanceof Float32Array)) {\n this.data = new Float32Array(offset + appendSize);\n }\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n this._len = offset;\n };\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (this._len + arguments.length > data.length) {\n this._expandData();\n data = this.data;\n }\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n PathProxy.prototype._drawPendingPt = function () {\n if (this._pendingPtDist > 0) {\n this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n this._pendingPtDist = 0;\n }\n };\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n this.data = newData;\n }\n };\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n this._drawPendingPt();\n var data = this.data;\n if (data instanceof Array) {\n data.length = this._len;\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var l = -1;\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n case CMD.L: {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n break;\n }\n case CMD.C: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R: {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n case CMD.Z: {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n var pendingPtDist = 0;\n var pendingPtX;\n var pendingPtY;\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n if (!displayedLength) {\n return;\n }\n }\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n if (cmd !== CMD.L && pendingPtDist > 0) {\n ctx.lineTo(pendingPtX, pendingPtY);\n pendingPtDist = 0;\n }\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n case CMD.L: {\n x = d[i++];\n y = d[i++];\n var dx = mathAbs(x - xi);\n var dy = mathAbs(y - yi);\n if (dx > ux || dy > uy) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > pendingPtDist) {\n pendingPtX = x;\n pendingPtY = y;\n pendingPtDist = d2;\n }\n }\n break;\n }\n case CMD.C: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n accumLength += l;\n }\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n accumLength += l;\n }\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = (rx > ry) ? rx : ry;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n accumLength += l;\n }\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n }\n else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n if (breakBuild) {\n break lo;\n }\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n d_1 -= height;\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n break lo;\n }\n accumLength += l;\n }\n ctx.rect(x, y, width, height);\n break;\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n PathProxy.prototype.clone = function () {\n var newProxy = new PathProxy();\n var data = this.data;\n newProxy.data = data.slice ? data.slice()\n : Array.prototype.slice.call(data);\n newProxy._len = this._len;\n return newProxy;\n };\n PathProxy.CMD = CMD;\n PathProxy.initDefaultProps = (function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._ux = 0;\n proto._uy = 0;\n proto._pendingPtDist = 0;\n proto._version = 0;\n })();\n return PathProxy;\n}());\nexport default PathProxy;\n"]},"metadata":{},"sourceType":"module"} |