1 line
62 KiB
JSON
1 line
62 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.fill.js\";\nimport \"core-js/modules/es.string.repeat.js\";\nimport { DEFAULT_COMMON_STYLE } from '../graphic/Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image.js';\nimport { getCanvasGradient, isClipPathChanged } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { RADIAN_TO_DEGREE } from '../core/util.js';\nimport { getLineDash } from './dashStyle.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT } from '../graphic/constants.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nvar pathProxyForDraw = new PathProxy(true);\n\nfunction styleHasStroke(style) {\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n}\n\nfunction isValidStrokeFillStyle(strokeOrFill) {\n return typeof strokeOrFill === 'string' && strokeOrFill !== 'none';\n}\n\nfunction styleHasFill(style) {\n var fill = style.fill;\n return fill != null && fill !== 'none';\n}\n\nfunction doFillPath(ctx, style) {\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.fill();\n }\n}\n\nfunction doStrokePath(ctx, style) {\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.stroke();\n }\n}\n\nexport function createCanvasPattern(ctx, pattern, el) {\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\n\n if (isImageReady(image)) {\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\n\n if (typeof DOMMatrix === 'function' && canvasPattern && canvasPattern.setTransform) {\n var matrix = new DOMMatrix();\n matrix.translateSelf(pattern.x || 0, pattern.y || 0);\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);\n matrix.scaleSelf(pattern.scaleX || 1, pattern.scaleY || 1);\n canvasPattern.setTransform(matrix);\n }\n\n return canvasPattern;\n }\n}\n\nfunction brushPath(ctx, el, style, inBatch) {\n var _a;\n\n var hasStroke = styleHasStroke(style);\n var hasFill = styleHasFill(style);\n var strokePercent = style.strokePercent;\n var strokePart = strokePercent < 1;\n var firstDraw = !el.path;\n\n if ((!el.silent || strokePart) && firstDraw) {\n el.createPathProxy();\n }\n\n var path = el.path || pathProxyForDraw;\n var dirtyFlag = el.__dirty;\n\n if (!inBatch) {\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n var fillGradient = void 0;\n var strokeGradient = void 0;\n var fillPattern = void 0;\n var strokePattern = void 0;\n var rect = void 0;\n\n if (hasFillGradient || hasStrokeGradient) {\n rect = el.getBoundingRect();\n }\n\n if (hasFillGradient) {\n fillGradient = dirtyFlag ? getCanvasGradient(ctx, fill, rect) : el.__canvasFillGradient;\n el.__canvasFillGradient = fillGradient;\n }\n\n if (hasStrokeGradient) {\n strokeGradient = dirtyFlag ? getCanvasGradient(ctx, stroke, rect) : el.__canvasStrokeGradient;\n el.__canvasStrokeGradient = strokeGradient;\n }\n\n if (hasFillPattern) {\n fillPattern = dirtyFlag || !el.__canvasFillPattern ? createCanvasPattern(ctx, fill, el) : el.__canvasFillPattern;\n el.__canvasFillPattern = fillPattern;\n }\n\n if (hasStrokePattern) {\n strokePattern = dirtyFlag || !el.__canvasStrokePattern ? createCanvasPattern(ctx, stroke, el) : el.__canvasStrokePattern;\n el.__canvasStrokePattern = fillPattern;\n }\n\n if (hasFillGradient) {\n ctx.fillStyle = fillGradient;\n } else if (hasFillPattern) {\n if (fillPattern) {\n ctx.fillStyle = fillPattern;\n } else {\n hasFill = false;\n }\n }\n\n if (hasStrokeGradient) {\n ctx.strokeStyle = strokeGradient;\n } else if (hasStrokePattern) {\n if (strokePattern) {\n ctx.strokeStyle = strokePattern;\n } else {\n hasStroke = false;\n }\n }\n }\n\n var scale = el.getGlobalScale();\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\n var lineDash;\n var lineDashOffset;\n\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n\n var needsRebuild = true;\n\n if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT) {\n path.setDPR(ctx.dpr);\n\n if (strokePart) {\n path.setContext(null);\n } else {\n path.setContext(ctx);\n needsRebuild = false;\n }\n\n path.reset();\n el.buildPath(path, el.shape, inBatch);\n path.toStatic();\n el.pathUpdated();\n }\n\n if (needsRebuild) {\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\n }\n\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (!inBatch) {\n if (style.strokeFirst) {\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n\n if (hasFill) {\n doFillPath(ctx, style);\n }\n } else {\n if (hasFill) {\n doFillPath(ctx, style);\n }\n\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n }\n }\n\n if (lineDash) {\n ctx.setLineDash([]);\n }\n}\n\nfunction brushImage(ctx, el, style) {\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\n\n if (!image || !isImageReady(image)) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = el.getWidth();\n var height = el.getHeight();\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n }\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n }\n}\n\nfunction brushText(ctx, el, style) {\n var _a;\n\n var text = style.text;\n text != null && (text += '');\n\n if (text) {\n ctx.font = style.font || DEFAULT_FONT;\n ctx.textAlign = style.textAlign;\n ctx.textBaseline = style.textBaseline;\n var lineDash = void 0;\n var lineDashOffset = void 0;\n\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (style.strokeFirst) {\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n } else {\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n }\n\n if (lineDash) {\n ctx.setLineDash([]);\n }\n }\n}\n\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nvar STROKE_PROPS = [['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]];\n\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\n var styleChanged = false;\n\n if (!forceSetAll) {\n prevStyle = prevStyle || {};\n\n if (style === prevStyle) {\n return false;\n }\n }\n\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n var opacity = Math.max(Math.min(style.opacity, 1), 0);\n ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\n }\n\n if (forceSetAll || style.blend !== prevStyle.blend) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\n }\n\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\n var propName = SHADOW_NUMBER_PROPS[i];\n\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx[propName] = ctx.dpr * (style[propName] || 0);\n }\n }\n\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\n }\n\n return styleChanged;\n}\n\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\n var style = getStyle(el, scope.inHover);\n var prevStyle = forceSetAll ? null : prevEl && getStyle(prevEl, scope.inHover) || {};\n\n if (style === prevStyle) {\n return false;\n }\n\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\n\n if (forceSetAll || style.fill !== prevStyle.fill) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);\n }\n\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);\n }\n\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (el.hasStroke()) {\n var lineWidth = style.lineWidth;\n var newLineWidth = lineWidth / (style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1);\n\n if (ctx.lineWidth !== newLineWidth) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx.lineWidth = newLineWidth;\n }\n }\n\n for (var i = 0; i < STROKE_PROPS.length; i++) {\n var prop = STROKE_PROPS[i];\n var propName = prop[0];\n\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n\n ctx[propName] = style[propName] || prop[1];\n }\n }\n\n return styleChanged;\n}\n\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\n}\n\nfunction setContextTransform(ctx, el) {\n var m = el.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n}\n\nfunction updateClipStatus(clipPaths, ctx, scope) {\n var allClipped = false;\n\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n allClipped = allClipped || clipPath.isZeroArea();\n setContextTransform(ctx, clipPath);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip();\n }\n\n scope.allClipped = allClipped;\n}\n\nfunction isTransformChanged(m0, m1) {\n if (m0 && m1) {\n return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5];\n } else if (!m0 && !m1) {\n return false;\n }\n\n return true;\n}\n\nvar DRAW_TYPE_PATH = 1;\nvar DRAW_TYPE_IMAGE = 2;\nvar DRAW_TYPE_TEXT = 3;\nvar DRAW_TYPE_INCREMENTAL = 4;\n\nfunction canPathBatch(style) {\n var hasFill = styleHasFill(style);\n var hasStroke = styleHasStroke(style);\n return !(style.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style.fill !== 'string' || hasStroke && typeof style.stroke !== 'string' || style.strokePercent < 1 || style.strokeOpacity < 1 || style.fillOpacity < 1);\n}\n\nfunction flushPathDrawn(ctx, scope) {\n scope.batchFill && ctx.fill();\n scope.batchStroke && ctx.stroke();\n scope.batchFill = '';\n scope.batchStroke = '';\n}\n\nfunction getStyle(el, inHover) {\n return inHover ? el.__hoverStyle || el.style : el.style;\n}\n\nexport function brushSingle(ctx, el) {\n brush(ctx, el, {\n inHover: false,\n viewWidth: 0,\n viewHeight: 0\n }, true);\n}\nexport function brush(ctx, el, scope, isLast) {\n var m = el.transform;\n\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\n el.__dirty &= ~REDRAW_BIT;\n el.__isRendered = false;\n return;\n }\n\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths;\n var forceSetTransform = false;\n var forceSetStyle = false;\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n if (prevElClipPaths && prevElClipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.restore();\n forceSetStyle = forceSetTransform = true;\n scope.prevElClipPaths = null;\n scope.allClipped = false;\n scope.prevEl = null;\n }\n\n if (clipPaths && clipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.save();\n updateClipStatus(clipPaths, ctx, scope);\n forceSetTransform = true;\n }\n\n scope.prevElClipPaths = clipPaths;\n }\n\n if (scope.allClipped) {\n el.__isRendered = false;\n return;\n }\n\n el.beforeBrush && el.beforeBrush();\n el.innerBeforeBrush();\n var prevEl = scope.prevEl;\n\n if (!prevEl) {\n forceSetStyle = forceSetTransform = true;\n }\n\n var canBatchPath = el instanceof Path && el.autoBatch && canPathBatch(el.style);\n\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\n flushPathDrawn(ctx, scope);\n setContextTransform(ctx, el);\n } else if (!canBatchPath) {\n flushPathDrawn(ctx, scope);\n }\n\n var style = getStyle(el, scope.inHover);\n\n if (el instanceof Path) {\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_PATH;\n }\n\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n\n if (!canBatchPath || !scope.batchFill && !scope.batchStroke) {\n ctx.beginPath();\n }\n\n brushPath(ctx, el, style, canBatchPath);\n\n if (canBatchPath) {\n scope.batchFill = style.fill || '';\n scope.batchStroke = style.stroke || '';\n }\n } else {\n if (el instanceof TSpan) {\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_TEXT;\n }\n\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushText(ctx, el, style);\n } else if (el instanceof ZRImage) {\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_IMAGE;\n }\n\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushImage(ctx, el, style);\n } else if (el.getTemporalDisplayables) {\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\n }\n\n brushIncremental(ctx, el, scope);\n }\n }\n\n if (canBatchPath && isLast) {\n flushPathDrawn(ctx, scope);\n }\n\n el.innerAfterBrush();\n el.afterBrush && el.afterBrush();\n scope.prevEl = el;\n el.__dirty = 0;\n el.__isRendered = true;\n}\n\nfunction brushIncremental(ctx, el, scope) {\n var displayables = el.getDisplayables();\n var temporalDisplayables = el.getTemporalDisplayables();\n ctx.save();\n var innerScope = {\n prevElClipPaths: null,\n prevEl: null,\n allClipped: false,\n viewWidth: scope.viewWidth,\n viewHeight: scope.viewHeight,\n inHover: scope.inHover\n };\n var i;\n var len;\n\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\n var displayable = displayables[i];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i === len - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\n var displayable = temporalDisplayables[i_1];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n\n el.clearTemporalDisplayables();\n el.notClear = true;\n ctx.restore();\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/node_modules/zrender/lib/canvas/graphic.js"],"names":["DEFAULT_COMMON_STYLE","PathProxy","createOrUpdateImage","isImageReady","getCanvasGradient","isClipPathChanged","Path","ZRImage","TSpan","RADIAN_TO_DEGREE","getLineDash","REDRAW_BIT","SHAPE_CHANGED_BIT","DEFAULT_FONT","pathProxyForDraw","styleHasStroke","style","stroke","lineWidth","isValidStrokeFillStyle","strokeOrFill","styleHasFill","fill","doFillPath","ctx","fillOpacity","originalGlobalAlpha","globalAlpha","opacity","doStrokePath","strokeOpacity","createCanvasPattern","pattern","el","image","__image","canvasPattern","createPattern","repeat","DOMMatrix","setTransform","matrix","translateSelf","x","y","rotateSelf","rotation","scaleSelf","scaleX","scaleY","brushPath","inBatch","_a","hasStroke","hasFill","strokePercent","strokePart","firstDraw","path","silent","createPathProxy","dirtyFlag","__dirty","hasFillGradient","colorStops","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","rect","getBoundingRect","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","fillStyle","strokeStyle","scale","getGlobalScale","setScale","segmentIgnoreThreshold","lineDash","lineDashOffset","setLineDash","needsRebuild","setDPR","dpr","setContext","reset","buildPath","shape","toStatic","pathUpdated","rebuildPath","strokeFirst","brushImage","onload","width","getWidth","height","getHeight","aspect","sWidth","sHeight","sx","sy","drawImage","brushText","text","font","textAlign","textBaseline","strokeText","fillText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","scope","styleChanged","flushPathDrawn","Math","max","min","isNaN","blend","globalCompositeOperation","i","length","propName","shadowColor","bindPathAndTextCommonStyle","prevEl","getStyle","inHover","newLineWidth","strokeNoScale","getLineScale","prop","bindImageStyle","setContextTransform","m","transform","updateClipStatus","clipPaths","allClipped","clipPath","isZeroArea","beginPath","clip","isTransformChanged","m0","m1","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","batchFill","batchStroke","__hoverStyle","brushSingle","brush","viewWidth","viewHeight","isLast","shouldBePainted","__isRendered","__clipPaths","prevElClipPaths","forceSetTransform","forceSetStyle","restore","save","beforeBrush","innerBeforeBrush","canBatchPath","autoBatch","lastDrawType","getTemporalDisplayables","brushIncremental","innerAfterBrush","afterBrush","displayables","getDisplayables","temporalDisplayables","innerScope","len","getCursor","displayable","i_1","len_1","clearTemporalDisplayables","notClear"],"mappings":"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","sourcesContent":["import { DEFAULT_COMMON_STYLE } from '../graphic/Displayable.js';\r\nimport PathProxy from '../core/PathProxy.js';\r\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image.js';\r\nimport { getCanvasGradient, isClipPathChanged } from './helper.js';\r\nimport Path from '../graphic/Path.js';\r\nimport ZRImage from '../graphic/Image.js';\r\nimport TSpan from '../graphic/TSpan.js';\r\nimport { RADIAN_TO_DEGREE } from '../core/util.js';\r\nimport { getLineDash } from './dashStyle.js';\r\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT } from '../graphic/constants.js';\r\nimport { DEFAULT_FONT } from '../core/platform.js';\r\nvar pathProxyForDraw = new PathProxy(true);\r\nfunction styleHasStroke(style) {\r\n var stroke = style.stroke;\r\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n}\r\nfunction isValidStrokeFillStyle(strokeOrFill) {\r\n return typeof strokeOrFill === 'string' && strokeOrFill !== 'none';\r\n}\r\nfunction styleHasFill(style) {\r\n var fill = style.fill;\r\n return fill != null && fill !== 'none';\r\n}\r\nfunction doFillPath(ctx, style) {\r\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n var originalGlobalAlpha = ctx.globalAlpha;\r\n ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n ctx.fill();\r\n ctx.globalAlpha = originalGlobalAlpha;\r\n }\r\n else {\r\n ctx.fill();\r\n }\r\n}\r\nfunction doStrokePath(ctx, style) {\r\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n var originalGlobalAlpha = ctx.globalAlpha;\r\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n ctx.stroke();\r\n ctx.globalAlpha = originalGlobalAlpha;\r\n }\r\n else {\r\n ctx.stroke();\r\n }\r\n}\r\nexport function createCanvasPattern(ctx, pattern, el) {\r\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n if (isImageReady(image)) {\r\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\r\n if (typeof DOMMatrix === 'function'\r\n && canvasPattern\r\n && canvasPattern.setTransform) {\r\n var matrix = new DOMMatrix();\r\n matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\r\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);\r\n matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\r\n canvasPattern.setTransform(matrix);\r\n }\r\n return canvasPattern;\r\n }\r\n}\r\nfunction brushPath(ctx, el, style, inBatch) {\r\n var _a;\r\n var hasStroke = styleHasStroke(style);\r\n var hasFill = styleHasFill(style);\r\n var strokePercent = style.strokePercent;\r\n var strokePart = strokePercent < 1;\r\n var firstDraw = !el.path;\r\n if ((!el.silent || strokePart) && firstDraw) {\r\n el.createPathProxy();\r\n }\r\n var path = el.path || pathProxyForDraw;\r\n var dirtyFlag = el.__dirty;\r\n if (!inBatch) {\r\n var fill = style.fill;\r\n var stroke = style.stroke;\r\n var hasFillGradient = hasFill && !!fill.colorStops;\r\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n var hasFillPattern = hasFill && !!fill.image;\r\n var hasStrokePattern = hasStroke && !!stroke.image;\r\n var fillGradient = void 0;\r\n var strokeGradient = void 0;\r\n var fillPattern = void 0;\r\n var strokePattern = void 0;\r\n var rect = void 0;\r\n if (hasFillGradient || hasStrokeGradient) {\r\n rect = el.getBoundingRect();\r\n }\r\n if (hasFillGradient) {\r\n fillGradient = dirtyFlag\r\n ? getCanvasGradient(ctx, fill, rect)\r\n : el.__canvasFillGradient;\r\n el.__canvasFillGradient = fillGradient;\r\n }\r\n if (hasStrokeGradient) {\r\n strokeGradient = dirtyFlag\r\n ? getCanvasGradient(ctx, stroke, rect)\r\n : el.__canvasStrokeGradient;\r\n el.__canvasStrokeGradient = strokeGradient;\r\n }\r\n if (hasFillPattern) {\r\n fillPattern = (dirtyFlag || !el.__canvasFillPattern)\r\n ? createCanvasPattern(ctx, fill, el)\r\n : el.__canvasFillPattern;\r\n el.__canvasFillPattern = fillPattern;\r\n }\r\n if (hasStrokePattern) {\r\n strokePattern = (dirtyFlag || !el.__canvasStrokePattern)\r\n ? createCanvasPattern(ctx, stroke, el)\r\n : el.__canvasStrokePattern;\r\n el.__canvasStrokePattern = fillPattern;\r\n }\r\n if (hasFillGradient) {\r\n ctx.fillStyle = fillGradient;\r\n }\r\n else if (hasFillPattern) {\r\n if (fillPattern) {\r\n ctx.fillStyle = fillPattern;\r\n }\r\n else {\r\n hasFill = false;\r\n }\r\n }\r\n if (hasStrokeGradient) {\r\n ctx.strokeStyle = strokeGradient;\r\n }\r\n else if (hasStrokePattern) {\r\n if (strokePattern) {\r\n ctx.strokeStyle = strokePattern;\r\n }\r\n else {\r\n hasStroke = false;\r\n }\r\n }\r\n }\r\n var scale = el.getGlobalScale();\r\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n var lineDash;\r\n var lineDashOffset;\r\n if (ctx.setLineDash && style.lineDash) {\r\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\r\n }\r\n var needsRebuild = true;\r\n if (firstDraw || (dirtyFlag & SHAPE_CHANGED_BIT)) {\r\n path.setDPR(ctx.dpr);\r\n if (strokePart) {\r\n path.setContext(null);\r\n }\r\n else {\r\n path.setContext(ctx);\r\n needsRebuild = false;\r\n }\r\n path.reset();\r\n el.buildPath(path, el.shape, inBatch);\r\n path.toStatic();\r\n el.pathUpdated();\r\n }\r\n if (needsRebuild) {\r\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n }\r\n if (lineDash) {\r\n ctx.setLineDash(lineDash);\r\n ctx.lineDashOffset = lineDashOffset;\r\n }\r\n if (!inBatch) {\r\n if (style.strokeFirst) {\r\n if (hasStroke) {\r\n doStrokePath(ctx, style);\r\n }\r\n if (hasFill) {\r\n doFillPath(ctx, style);\r\n }\r\n }\r\n else {\r\n if (hasFill) {\r\n doFillPath(ctx, style);\r\n }\r\n if (hasStroke) {\r\n doStrokePath(ctx, style);\r\n }\r\n }\r\n }\r\n if (lineDash) {\r\n ctx.setLineDash([]);\r\n }\r\n}\r\nfunction brushImage(ctx, el, style) {\r\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n if (!image || !isImageReady(image)) {\r\n return;\r\n }\r\n var x = style.x || 0;\r\n var y = style.y || 0;\r\n var width = el.getWidth();\r\n var height = el.getHeight();\r\n var aspect = image.width / image.height;\r\n if (width == null && height != null) {\r\n width = height * aspect;\r\n }\r\n else if (height == null && width != null) {\r\n height = width / aspect;\r\n }\r\n else if (width == null && height == null) {\r\n width = image.width;\r\n height = image.height;\r\n }\r\n if (style.sWidth && style.sHeight) {\r\n var sx = style.sx || 0;\r\n var sy = style.sy || 0;\r\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n }\r\n else if (style.sx && style.sy) {\r\n var sx = style.sx;\r\n var sy = style.sy;\r\n var sWidth = width - sx;\r\n var sHeight = height - sy;\r\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n }\r\n else {\r\n ctx.drawImage(image, x, y, width, height);\r\n }\r\n}\r\nfunction brushText(ctx, el, style) {\r\n var _a;\r\n var text = style.text;\r\n text != null && (text += '');\r\n if (text) {\r\n ctx.font = style.font || DEFAULT_FONT;\r\n ctx.textAlign = style.textAlign;\r\n ctx.textBaseline = style.textBaseline;\r\n var lineDash = void 0;\r\n var lineDashOffset = void 0;\r\n if (ctx.setLineDash && style.lineDash) {\r\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\r\n }\r\n if (lineDash) {\r\n ctx.setLineDash(lineDash);\r\n ctx.lineDashOffset = lineDashOffset;\r\n }\r\n if (style.strokeFirst) {\r\n if (styleHasStroke(style)) {\r\n ctx.strokeText(text, style.x, style.y);\r\n }\r\n if (styleHasFill(style)) {\r\n ctx.fillText(text, style.x, style.y);\r\n }\r\n }\r\n else {\r\n if (styleHasFill(style)) {\r\n ctx.fillText(text, style.x, style.y);\r\n }\r\n if (styleHasStroke(style)) {\r\n ctx.strokeText(text, style.x, style.y);\r\n }\r\n }\r\n if (lineDash) {\r\n ctx.setLineDash([]);\r\n }\r\n }\r\n}\r\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\nvar STROKE_PROPS = [\r\n ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n];\r\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n var styleChanged = false;\r\n if (!forceSetAll) {\r\n prevStyle = prevStyle || {};\r\n if (style === prevStyle) {\r\n return false;\r\n }\r\n }\r\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n var opacity = Math.max(Math.min(style.opacity, 1), 0);\r\n ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\r\n }\r\n if (forceSetAll || style.blend !== prevStyle.blend) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n }\r\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n var propName = SHADOW_NUMBER_PROPS[i];\r\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n }\r\n }\r\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n }\r\n return styleChanged;\r\n}\r\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n var style = getStyle(el, scope.inHover);\r\n var prevStyle = forceSetAll\r\n ? null\r\n : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n if (style === prevStyle) {\r\n return false;\r\n }\r\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n if (forceSetAll || style.fill !== prevStyle.fill) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);\r\n }\r\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);\r\n }\r\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n }\r\n if (el.hasStroke()) {\r\n var lineWidth = style.lineWidth;\r\n var newLineWidth = lineWidth / ((style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1);\r\n if (ctx.lineWidth !== newLineWidth) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.lineWidth = newLineWidth;\r\n }\r\n }\r\n for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n var prop = STROKE_PROPS[i];\r\n var propName = prop[0];\r\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx[propName] = style[propName] || prop[1];\r\n }\r\n }\r\n return styleChanged;\r\n}\r\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n}\r\nfunction setContextTransform(ctx, el) {\r\n var m = el.transform;\r\n var dpr = ctx.dpr || 1;\r\n if (m) {\r\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n }\r\n else {\r\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n }\r\n}\r\nfunction updateClipStatus(clipPaths, ctx, scope) {\r\n var allClipped = false;\r\n for (var i = 0; i < clipPaths.length; i++) {\r\n var clipPath = clipPaths[i];\r\n allClipped = allClipped || clipPath.isZeroArea();\r\n setContextTransform(ctx, clipPath);\r\n ctx.beginPath();\r\n clipPath.buildPath(ctx, clipPath.shape);\r\n ctx.clip();\r\n }\r\n scope.allClipped = allClipped;\r\n}\r\nfunction isTransformChanged(m0, m1) {\r\n if (m0 && m1) {\r\n return m0[0] !== m1[0]\r\n || m0[1] !== m1[1]\r\n || m0[2] !== m1[2]\r\n || m0[3] !== m1[3]\r\n || m0[4] !== m1[4]\r\n || m0[5] !== m1[5];\r\n }\r\n else if (!m0 && !m1) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar DRAW_TYPE_PATH = 1;\r\nvar DRAW_TYPE_IMAGE = 2;\r\nvar DRAW_TYPE_TEXT = 3;\r\nvar DRAW_TYPE_INCREMENTAL = 4;\r\nfunction canPathBatch(style) {\r\n var hasFill = styleHasFill(style);\r\n var hasStroke = styleHasStroke(style);\r\n return !(style.lineDash\r\n || !(+hasFill ^ +hasStroke)\r\n || (hasFill && typeof style.fill !== 'string')\r\n || (hasStroke && typeof style.stroke !== 'string')\r\n || style.strokePercent < 1\r\n || style.strokeOpacity < 1\r\n || style.fillOpacity < 1);\r\n}\r\nfunction flushPathDrawn(ctx, scope) {\r\n scope.batchFill && ctx.fill();\r\n scope.batchStroke && ctx.stroke();\r\n scope.batchFill = '';\r\n scope.batchStroke = '';\r\n}\r\nfunction getStyle(el, inHover) {\r\n return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n}\r\nexport function brushSingle(ctx, el) {\r\n brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n}\r\nexport function brush(ctx, el, scope, isLast) {\r\n var m = el.transform;\r\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\r\n el.__dirty &= ~REDRAW_BIT;\r\n el.__isRendered = false;\r\n return;\r\n }\r\n var clipPaths = el.__clipPaths;\r\n var prevElClipPaths = scope.prevElClipPaths;\r\n var forceSetTransform = false;\r\n var forceSetStyle = false;\r\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n if (prevElClipPaths && prevElClipPaths.length) {\r\n flushPathDrawn(ctx, scope);\r\n ctx.restore();\r\n forceSetStyle = forceSetTransform = true;\r\n scope.prevElClipPaths = null;\r\n scope.allClipped = false;\r\n scope.prevEl = null;\r\n }\r\n if (clipPaths && clipPaths.length) {\r\n flushPathDrawn(ctx, scope);\r\n ctx.save();\r\n updateClipStatus(clipPaths, ctx, scope);\r\n forceSetTransform = true;\r\n }\r\n scope.prevElClipPaths = clipPaths;\r\n }\r\n if (scope.allClipped) {\r\n el.__isRendered = false;\r\n return;\r\n }\r\n el.beforeBrush && el.beforeBrush();\r\n el.innerBeforeBrush();\r\n var prevEl = scope.prevEl;\r\n if (!prevEl) {\r\n forceSetStyle = forceSetTransform = true;\r\n }\r\n var canBatchPath = el instanceof Path\r\n && el.autoBatch\r\n && canPathBatch(el.style);\r\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n flushPathDrawn(ctx, scope);\r\n setContextTransform(ctx, el);\r\n }\r\n else if (!canBatchPath) {\r\n flushPathDrawn(ctx, scope);\r\n }\r\n var style = getStyle(el, scope.inHover);\r\n if (el instanceof Path) {\r\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_PATH;\r\n }\r\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n ctx.beginPath();\r\n }\r\n brushPath(ctx, el, style, canBatchPath);\r\n if (canBatchPath) {\r\n scope.batchFill = style.fill || '';\r\n scope.batchStroke = style.stroke || '';\r\n }\r\n }\r\n else {\r\n if (el instanceof TSpan) {\r\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_TEXT;\r\n }\r\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n brushText(ctx, el, style);\r\n }\r\n else if (el instanceof ZRImage) {\r\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n }\r\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n brushImage(ctx, el, style);\r\n }\r\n else if (el.getTemporalDisplayables) {\r\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n }\r\n brushIncremental(ctx, el, scope);\r\n }\r\n }\r\n if (canBatchPath && isLast) {\r\n flushPathDrawn(ctx, scope);\r\n }\r\n el.innerAfterBrush();\r\n el.afterBrush && el.afterBrush();\r\n scope.prevEl = el;\r\n el.__dirty = 0;\r\n el.__isRendered = true;\r\n}\r\nfunction brushIncremental(ctx, el, scope) {\r\n var displayables = el.getDisplayables();\r\n var temporalDisplayables = el.getTemporalDisplayables();\r\n ctx.save();\r\n var innerScope = {\r\n prevElClipPaths: null,\r\n prevEl: null,\r\n allClipped: false,\r\n viewWidth: scope.viewWidth,\r\n viewHeight: scope.viewHeight,\r\n inHover: scope.inHover\r\n };\r\n var i;\r\n var len;\r\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n var displayable = displayables[i];\r\n displayable.beforeBrush && displayable.beforeBrush();\r\n displayable.innerBeforeBrush();\r\n brush(ctx, displayable, innerScope, i === len - 1);\r\n displayable.innerAfterBrush();\r\n displayable.afterBrush && displayable.afterBrush();\r\n innerScope.prevEl = displayable;\r\n }\r\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\r\n var displayable = temporalDisplayables[i_1];\r\n displayable.beforeBrush && displayable.beforeBrush();\r\n displayable.innerBeforeBrush();\r\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n displayable.innerAfterBrush();\r\n displayable.afterBrush && displayable.afterBrush();\r\n innerScope.prevEl = displayable;\r\n }\r\n el.clearTemporalDisplayables();\r\n el.notClear = true;\r\n ctx.restore();\r\n}\r\n"]},"metadata":{},"sourceType":"module"} |