@visactor/vrender-core 0.23.0-alpha.2 → 0.23.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/cjs/canvas/empty-context.d.ts +1 -0
  2. package/cjs/canvas/empty-context.js +4 -0
  3. package/cjs/canvas/empty-context.js.map +1 -1
  4. package/cjs/color-string/index.js +2 -1
  5. package/cjs/common/enums.js +1 -2
  6. package/cjs/common/path-svg.js +2 -1
  7. package/cjs/common/performance-raf.d.ts +2 -0
  8. package/cjs/common/performance-raf.js +8 -3
  9. package/cjs/common/performance-raf.js.map +1 -1
  10. package/cjs/common/store.js +1 -2
  11. package/cjs/core/global.d.ts +3 -0
  12. package/cjs/core/global.js +13 -3
  13. package/cjs/core/global.js.map +1 -1
  14. package/cjs/core/stage.d.ts +1 -0
  15. package/cjs/core/stage.js +7 -6
  16. package/cjs/core/stage.js.map +1 -1
  17. package/cjs/graphic/graphic.js.map +1 -1
  18. package/cjs/interface/context.d.ts +1 -0
  19. package/cjs/interface/context.js.map +1 -1
  20. package/cjs/interface/global.d.ts +2 -0
  21. package/cjs/interface/global.js.map +1 -1
  22. package/cjs/interface/graphic.d.ts +1 -1
  23. package/cjs/interface/graphic.js.map +1 -1
  24. package/cjs/interface/render.d.ts +6 -0
  25. package/cjs/interface/render.js.map +1 -1
  26. package/cjs/interface/stage.d.ts +1 -1
  27. package/cjs/interface/stage.js.map +1 -1
  28. package/cjs/render/contributions/render/arc-render.d.ts +4 -2
  29. package/cjs/render/contributions/render/arc-render.js +19 -17
  30. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  31. package/cjs/render/contributions/render/base-render.d.ts +2 -2
  32. package/cjs/render/contributions/render/base-render.js +2 -2
  33. package/cjs/render/contributions/render/base-render.js.map +1 -1
  34. package/cjs/render/contributions/render/draw-contribution.d.ts +1 -0
  35. package/cjs/render/contributions/render/draw-contribution.js +23 -19
  36. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  37. package/cjs/render/contributions/render/draw-interceptor.js +1 -0
  38. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  39. package/cjs/render/contributions/render/group-render.d.ts +2 -2
  40. package/cjs/render/contributions/render/group-render.js +14 -10
  41. package/cjs/render/contributions/render/group-render.js.map +1 -1
  42. package/cjs/render/contributions/render/rect-render.d.ts +3 -1
  43. package/cjs/render/contributions/render/rect-render.js +17 -15
  44. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  45. package/cjs/render/contributions/render/symbol-render.d.ts +4 -2
  46. package/cjs/render/contributions/render/symbol-render.js +16 -11
  47. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  48. package/dist/index.es.js +222 -172
  49. package/es/canvas/empty-context.d.ts +1 -0
  50. package/es/canvas/empty-context.js +4 -0
  51. package/es/canvas/empty-context.js.map +1 -1
  52. package/es/color-string/index.js +2 -1
  53. package/es/common/enums.js +1 -2
  54. package/es/common/path-svg.js +2 -1
  55. package/es/common/performance-raf.d.ts +2 -0
  56. package/es/common/performance-raf.js +8 -3
  57. package/es/common/performance-raf.js.map +1 -1
  58. package/es/common/store.js +1 -2
  59. package/es/core/global.d.ts +3 -0
  60. package/es/core/global.js +14 -2
  61. package/es/core/global.js.map +1 -1
  62. package/es/core/stage.d.ts +1 -0
  63. package/es/core/stage.js +7 -6
  64. package/es/core/stage.js.map +1 -1
  65. package/es/graphic/graphic.js.map +1 -1
  66. package/es/interface/context.d.ts +1 -0
  67. package/es/interface/context.js.map +1 -1
  68. package/es/interface/global.d.ts +2 -0
  69. package/es/interface/global.js.map +1 -1
  70. package/es/interface/graphic.d.ts +1 -1
  71. package/es/interface/graphic.js.map +1 -1
  72. package/es/interface/render.d.ts +6 -0
  73. package/es/interface/render.js.map +1 -1
  74. package/es/interface/stage.d.ts +1 -1
  75. package/es/interface/stage.js.map +1 -1
  76. package/es/render/contributions/render/arc-render.d.ts +4 -2
  77. package/es/render/contributions/render/arc-render.js +19 -17
  78. package/es/render/contributions/render/arc-render.js.map +1 -1
  79. package/es/render/contributions/render/base-render.d.ts +2 -2
  80. package/es/render/contributions/render/base-render.js +2 -2
  81. package/es/render/contributions/render/base-render.js.map +1 -1
  82. package/es/render/contributions/render/draw-contribution.d.ts +1 -0
  83. package/es/render/contributions/render/draw-contribution.js +23 -19
  84. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  85. package/es/render/contributions/render/draw-interceptor.js +1 -0
  86. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  87. package/es/render/contributions/render/group-render.d.ts +2 -2
  88. package/es/render/contributions/render/group-render.js +14 -10
  89. package/es/render/contributions/render/group-render.js.map +1 -1
  90. package/es/render/contributions/render/rect-render.d.ts +3 -1
  91. package/es/render/contributions/render/rect-render.js +17 -14
  92. package/es/render/contributions/render/rect-render.js.map +1 -1
  93. package/es/render/contributions/render/symbol-render.d.ts +4 -2
  94. package/es/render/contributions/render/symbol-render.js +16 -11
  95. package/es/render/contributions/render/symbol-render.js.map +1 -1
  96. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/empty-context.ts"],"names":[],"mappings":"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","file":"empty-context.js","sourcesContent":["import type { IMatrix } from '@visactor/vutils';\nimport { Matrix } from '@visactor/vutils';\nimport { injectable } from '../common/inversify-lite';\nimport type {\n ICanvas,\n ICommonStyleParams,\n IContext2d,\n ISetCommonStyleParams,\n ISetStrokeStyleParams,\n IStrokeStyleParams,\n IConicalGradientData,\n ITextStyleParams\n} from '../interface';\nimport { contain, containStroke } from './util';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getScaledStroke } from '../common/canvas-utils';\nimport { matrixAllocate } from '../allocator/matrix-allocate';\n/**\n * 部分源码参考konva\n * MIT License\n\n Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)\n Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\n// https://github.com/konvajs/konva/blob/master/src/Context.ts\nconst initMatrix = new Matrix(1, 0, 0, 1, 0, 0);\nconst globalPoint = { x: 0, y: 0 };\n\n@injectable()\nexport class EmptyContext2d implements IContext2d {\n declare path: CustomPath2D;\n declare canvas: null;\n declare stack: Matrix[];\n protected declare matrix: Matrix;\n protected declare applyedMatrix?: Matrix; // 被应用的matrix\n // 属性代理\n declare fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n declare font: string;\n declare globalAlpha: number;\n declare lineCap: string;\n declare lineDashOffset: number;\n declare lineJoin: string;\n declare lineWidth: number;\n declare miterLimit: number;\n declare shadowBlur: number;\n declare shadowColor: string;\n declare shadowOffsetX: number;\n declare shadowOffsetY: number;\n declare strokeStyle: string | CanvasGradient | CanvasPattern;\n declare textAlign: string;\n declare textBaseline: string;\n declare dpr: number;\n declare _clearMatrix: IMatrix;\n\n get nativeContext(): any {\n return this.path;\n }\n\n constructor(canvas: any, dpr: number) {\n this.matrix = new Matrix(1, 0, 0, 1, 0, 0);\n this.stack = [];\n this.dpr = dpr;\n this.applyedMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n this.path = new CustomPath2D();\n this._clearMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getCanvas(): ICanvas {\n throw new Error('不支持getCanvas');\n }\n\n getContext() {\n throw new Error('不支持getContext');\n }\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent(force: boolean = false) {\n // 只作简单判断\n if (!force && this.applyedMatrix.equalToMatrix(this.matrix)) {\n return;\n }\n\n this.applyedMatrix = this.cloneMatrix(this.matrix);\n return;\n }\n /**\n * 获取当前矩阵信息\n */\n get currentMatrix() {\n return this.matrix;\n }\n\n cloneMatrix(m: Matrix) {\n return matrixAllocate.allocateByObj(m);\n }\n\n /**\n * 清空画布\n */\n clear() {\n this.save();\n this.resetTransform();\n this.restore();\n }\n\n restore() {\n if (this.stack.length > 0) {\n matrixAllocate.free(this.matrix);\n this.matrix = this.stack.pop() as Matrix;\n this.setTransformForCurrent();\n }\n }\n highPerformanceRestore() {\n if (this.stack.length > 0) {\n matrixAllocate.free(this.matrix);\n this.matrix = this.stack.pop() as Matrix;\n }\n }\n\n /**\n *\n * @param angle 弧度数\n */\n rotate(rad: number, setTransform: boolean = true) {\n this.matrix.rotate(rad);\n setTransform && this.setTransformForCurrent();\n }\n\n save() {\n const matrix = this.cloneMatrix(this.matrix);\n this.stack.push(matrix);\n }\n highPerformanceSave() {\n const matrix = this.cloneMatrix(this.matrix);\n this.stack.push(matrix);\n }\n\n /**\n * 基于当前matrix再次scale\n * @param sx\n * @param sy\n * @param setTransform 是否设置transform到context中\n */\n scale(sx: number, sy: number, setTransform: boolean = true) {\n this.matrix.scale(sx, sy);\n setTransform && this.setTransformForCurrent();\n }\n setScale(sx: number, sy: number, setTransform: boolean = true): void {\n this.matrix.setScale(sx, sy);\n setTransform && this.setTransformForCurrent();\n }\n /**\n * 基于某个点进行缩放\n * @param sx\n * @param sy\n * @param px\n * @param py\n */\n scalePoint(sx: number, sy: number, px: number, py: number, setTransform: boolean = true) {\n this.translate(px, py, false);\n this.scale(sx, sy, false);\n this.translate(-px, -py, false);\n setTransform && this.setTransformForCurrent();\n }\n /**\n *\n * @param a\n * @param b\n * @param c\n * @param d\n * @param e\n * @param f\n * @param setTransform\n */\n setTransform(\n a: number,\n b: number,\n c: number,\n d: number,\n e: number,\n f: number,\n setTransform: boolean = true,\n dpr: number = this.dpr\n ) {\n this.matrix.setValue(dpr * a, dpr * b, dpr * c, dpr * d, dpr * e, dpr * f);\n setTransform && this.setTransformForCurrent();\n }\n\n setTransformFromMatrix(matrix: Matrix, setTransform: boolean = true, dpr: number = this.dpr) {\n this.matrix.setValue(\n matrix.a * dpr,\n matrix.b * dpr,\n matrix.c * dpr,\n matrix.d * dpr,\n matrix.e * dpr,\n matrix.f * dpr\n );\n setTransform && this.setTransformForCurrent();\n }\n\n resetTransform(setTransform: boolean = true, dpr: number = this.dpr) {\n this.setTransform(dpr, 0, 0, dpr, 0, 0);\n setTransform && this.setTransformForCurrent();\n }\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n transform(a: number, b: number, c: number, d: number, e: number, f: number, setTransform: boolean = true) {\n this.matrix.multiply(a, b, c, d, e, f);\n setTransform && this.setTransformForCurrent();\n }\n transformFromMatrix(matrix: Matrix, setTransform?: boolean): void {\n this.matrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n setTransform && this.setTransformForCurrent();\n }\n\n translate(x: number, y: number, setTransform: boolean = true) {\n this.matrix.translate(x, y);\n setTransform && this.setTransformForCurrent();\n }\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees(deg: number, setTransform: boolean = true) {\n const rad = (deg * Math.PI) / 180;\n this.rotate(rad, setTransform);\n }\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout(rad: number, x: number, y: number, setTransform: boolean = true) {\n this.translate(x, y, false);\n this.rotate(rad, false);\n this.translate(-x, -y, false);\n setTransform && this.setTransformForCurrent();\n }\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout(deg: number, x: number, y: number, setTransform: boolean = true) {\n this.translate(x, y, false);\n this.rotateDegrees(deg, false);\n this.translate(-x, -y, false);\n setTransform && this.setTransformForCurrent();\n }\n\n // /**\n // * 全局坐标 -> 当前矩阵的局部坐标\n // * @param x x\n // * @param y y\n // */\n // transformPoint(x: number, y: number): Point {\n // const inverseMatrix = this.matrix.getInverse();\n // // dpr\n // x = x * this.dpr;\n // y = y * this.dpr;\n // return new Point(\n // x * inverseMatrix.a + y * inverseMatrix.c + inverseMatrix.e,\n // x * inverseMatrix.b + y * inverseMatrix.d + inverseMatrix.f\n // );\n // }\n\n // /**\n // * 坐标转换\n // * @param x x\n // * @param y y\n // */\n // transformPoint2(x: number, y: number): Point {\n // const inverseMatrix = this.matrix;\n // return new Point(\n // x * inverseMatrix.a + y * inverseMatrix.c + inverseMatrix.e,\n // x * inverseMatrix.b + y * inverseMatrix.d + inverseMatrix.f\n // );\n // }\n\n // transformPoint3(x: number, y: number, matrix: Matrix): Point {\n // // dpr\n // x = x * this.dpr;\n // y = y * this.dpr;\n // return new Point(x * matrix.a + y * matrix.c + matrix.e, x * matrix.b + y * matrix.d + matrix.f);\n // }\n\n //////// 代理方法\n // isPointInStroke ,drawFocusIfNeeded 方法没有代理,如有需要再添加\n\n beginPath() {\n this.path.clear();\n }\n\n clip(fillRule?: CanvasFillRule): void;\n clip(path: Path2D, fillRule?: CanvasFillRule): void;\n clip(path?: Path2D | CanvasFillRule, fillRule?: CanvasFillRule) {\n return;\n }\n\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) {\n this.path.arc(x, y, radius, startAngle, endAngle, anticlockwise);\n }\n\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n arcTo(x1: number, y1: number, x2: number, y2: number, radiusX: number) {\n this.path.arcTo(x1, y1, x2, y2, radiusX);\n }\n\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.path.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n\n closePath() {\n this.path.closePath();\n }\n\n ellipse(\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n return;\n }\n lineTo(x: number, y: number) {\n this.path.lineTo(x, y);\n }\n\n moveTo(x: number, y: number) {\n this.path.moveTo(x, y);\n }\n\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.path.quadraticCurveTo(cpx, cpy, x, y);\n }\n\n rect(x: number, y: number, w: number, h: number) {\n this.path.rect(x, y, w, h);\n }\n\n createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData {\n return null;\n }\n\n createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient {\n throw new Error('不支持createLinearGradient');\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n throw new Error('不支持createPattern');\n }\n\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient {\n throw new Error('不支持createRadialGradient');\n }\n\n createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData {\n return null;\n }\n\n // createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradient | null {\n // // let edit = false;\n // // let pattern: CanvasPattern | null;\n // // // eslint-disable-next-line @typescript-eslint/no-this-alias\n // // const ctx = this;\n // // const obj: IConicalGradient = {\n // // stops: [],\n // // addColorStop(offset: number, color: string) {\n // // this.stops.push([offset, color]);\n // // edit = true;\n // // },\n // // GetPattern(minW: number, minH: number, deltaAngle?: number): CanvasPattern | null {\n // // if (edit) {\n // // if (!deltaAngle) deltaAngle = endAngle - startAngle;\n // // pattern = createConicalGradient(ctx, this.stops, x, y, deltaAngle, startAngle, endAngle, minW, minH);\n // // edit = false;\n // // }\n // // return pattern;\n // // }\n // // };\n // // return obj;\n // }\n\n // fill(fillRule?: CanvasFillRule): void;\n // fill(path?: Path2D, fillRule?: CanvasFillRule): void;\n fill(path?: Path2D, fillRule?: CanvasFillRule) {\n return;\n }\n\n fillRect(x: number, y: number, width: number, height: number) {\n this.path.rect(x, y, width, height);\n }\n\n clearRect(x: number, y: number, w: number, h: number) {\n return;\n }\n\n fillText(text: string, x: number, y: number) {\n return;\n }\n\n getImageData(sx: number, sy: number, sw: number, sh: number): ImageData {\n return null;\n }\n\n getLineDash(): number[] {\n return [];\n }\n\n isPointInPath(x: number, y: number) {\n this.matrix.transformPoint({ x, y }, globalPoint);\n return contain(this.path.commandList, globalPoint.x, globalPoint.y);\n }\n\n isPointInStroke(x: number, y: number) {\n if (!this.lineWidth) {\n return false;\n }\n this.matrix.transformPoint({ x, y }, globalPoint);\n const lineWidth = getScaledStroke(this, this.lineWidth, this.dpr);\n return containStroke(this.path.commandList, lineWidth, globalPoint.x, globalPoint.y);\n }\n\n measureText(text: string): { width: number } {\n throw new Error('不支持measureText');\n }\n\n putImageData(imagedata: ImageData, dx: number, dy: number) {\n throw new Error('不支持measureText');\n }\n\n setLineDash(segments: number[]) {\n return;\n }\n\n stroke(path?: Path2D) {\n return;\n }\n\n strokeRect(x: number, y: number, width: number, height: number) {\n this.path.rect(x, y, width, height);\n }\n\n strokeText(text: string, x: number, y: number) {\n return;\n }\n\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n dstX: number,\n dstY: number\n ): void;\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ): void;\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ): void;\n\n drawImage() {\n return;\n }\n\n setCommonStyle(\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n offsetX: number,\n offsetY: number,\n defaultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) {\n return;\n }\n\n _setCommonStyle(params: ISetCommonStyleParams, offsetX: number, offsetY: number, defaultParams?: ICommonStyleParams) {\n return;\n }\n\n setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams | IStrokeStyleParams[]\n ) {\n return;\n }\n _setStrokeStyle(params: ISetStrokeStyleParams, offsetX: number, offsetY: number, defaultParams?: IStrokeStyleParams) {\n return;\n }\n setTextStyleWithoutAlignBaseline(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n return;\n }\n setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n return;\n }\n\n draw() {\n return;\n }\n\n clearMatrix(setTransform: boolean = true, dpr: number = this.dpr) {\n this.setTransformFromMatrix(initMatrix, setTransform, dpr);\n }\n\n setClearMatrix(a: number, b: number, c: number, d: number, e: number, f: number) {\n this._clearMatrix.setValue(a, b, c, d, e, f);\n }\n\n onlyTranslate(dpr: number = this.dpr): boolean {\n return this.matrix.a === dpr && this.matrix.b === 0 && this.matrix.c === 0 && this.matrix.d === dpr;\n }\n\n release(...params: any): void {\n this.stack.forEach(m => matrixAllocate.free(m));\n this.stack.length = 0;\n return;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/canvas/empty-context.ts"],"names":[],"mappings":"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","file":"empty-context.js","sourcesContent":["import type { IMatrix } from '@visactor/vutils';\nimport { Matrix } from '@visactor/vutils';\nimport { injectable } from '../common/inversify-lite';\nimport type {\n ICanvas,\n ICommonStyleParams,\n IContext2d,\n ISetCommonStyleParams,\n ISetStrokeStyleParams,\n IStrokeStyleParams,\n IConicalGradientData,\n ITextStyleParams\n} from '../interface';\nimport { contain, containStroke } from './util';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getScaledStroke } from '../common/canvas-utils';\nimport { matrixAllocate } from '../allocator/matrix-allocate';\n/**\n * 部分源码参考konva\n * MIT License\n\n Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)\n Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\n// https://github.com/konvajs/konva/blob/master/src/Context.ts\nconst initMatrix = new Matrix(1, 0, 0, 1, 0, 0);\nconst globalPoint = { x: 0, y: 0 };\n\n@injectable()\nexport class EmptyContext2d implements IContext2d {\n declare path: CustomPath2D;\n declare canvas: null;\n declare stack: Matrix[];\n protected declare matrix: Matrix;\n protected declare applyedMatrix?: Matrix; // 被应用的matrix\n // 属性代理\n declare fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n declare font: string;\n declare globalAlpha: number;\n declare lineCap: string;\n declare lineDashOffset: number;\n declare lineJoin: string;\n declare lineWidth: number;\n declare miterLimit: number;\n declare shadowBlur: number;\n declare shadowColor: string;\n declare shadowOffsetX: number;\n declare shadowOffsetY: number;\n declare strokeStyle: string | CanvasGradient | CanvasPattern;\n declare textAlign: string;\n declare textBaseline: string;\n declare dpr: number;\n declare _clearMatrix: IMatrix;\n\n get nativeContext(): any {\n return this.path;\n }\n\n constructor(canvas: any, dpr: number) {\n this.matrix = new Matrix(1, 0, 0, 1, 0, 0);\n this.stack = [];\n this.dpr = dpr;\n this.applyedMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n this.path = new CustomPath2D();\n this._clearMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n getCanvas(): ICanvas {\n throw new Error('不支持getCanvas');\n }\n\n getContext() {\n throw new Error('不支持getContext');\n }\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent(force: boolean = false) {\n // 只作简单判断\n if (!force && this.applyedMatrix.equalToMatrix(this.matrix)) {\n return;\n }\n\n this.applyedMatrix = this.cloneMatrix(this.matrix);\n return;\n }\n /**\n * 获取当前矩阵信息\n */\n get currentMatrix() {\n return this.matrix;\n }\n\n cloneMatrix(m: Matrix) {\n return matrixAllocate.allocateByObj(m);\n }\n\n /**\n * 清空画布\n */\n clear() {\n this.save();\n this.resetTransform();\n this.restore();\n }\n\n reset() {\n this.matrix.setValue(1, 0, 0, 1, 0, 0);\n this.applyedMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n this.stack.length = 0;\n }\n\n restore() {\n if (this.stack.length > 0) {\n matrixAllocate.free(this.matrix);\n this.matrix = this.stack.pop() as Matrix;\n this.setTransformForCurrent();\n }\n }\n highPerformanceRestore() {\n if (this.stack.length > 0) {\n matrixAllocate.free(this.matrix);\n this.matrix = this.stack.pop() as Matrix;\n }\n }\n\n /**\n *\n * @param angle 弧度数\n */\n rotate(rad: number, setTransform: boolean = true) {\n this.matrix.rotate(rad);\n setTransform && this.setTransformForCurrent();\n }\n\n save() {\n const matrix = this.cloneMatrix(this.matrix);\n this.stack.push(matrix);\n }\n highPerformanceSave() {\n const matrix = this.cloneMatrix(this.matrix);\n this.stack.push(matrix);\n }\n\n /**\n * 基于当前matrix再次scale\n * @param sx\n * @param sy\n * @param setTransform 是否设置transform到context中\n */\n scale(sx: number, sy: number, setTransform: boolean = true) {\n this.matrix.scale(sx, sy);\n setTransform && this.setTransformForCurrent();\n }\n setScale(sx: number, sy: number, setTransform: boolean = true): void {\n this.matrix.setScale(sx, sy);\n setTransform && this.setTransformForCurrent();\n }\n /**\n * 基于某个点进行缩放\n * @param sx\n * @param sy\n * @param px\n * @param py\n */\n scalePoint(sx: number, sy: number, px: number, py: number, setTransform: boolean = true) {\n this.translate(px, py, false);\n this.scale(sx, sy, false);\n this.translate(-px, -py, false);\n setTransform && this.setTransformForCurrent();\n }\n /**\n *\n * @param a\n * @param b\n * @param c\n * @param d\n * @param e\n * @param f\n * @param setTransform\n */\n setTransform(\n a: number,\n b: number,\n c: number,\n d: number,\n e: number,\n f: number,\n setTransform: boolean = true,\n dpr: number = this.dpr\n ) {\n this.matrix.setValue(dpr * a, dpr * b, dpr * c, dpr * d, dpr * e, dpr * f);\n setTransform && this.setTransformForCurrent();\n }\n\n setTransformFromMatrix(matrix: Matrix, setTransform: boolean = true, dpr: number = this.dpr) {\n this.matrix.setValue(\n matrix.a * dpr,\n matrix.b * dpr,\n matrix.c * dpr,\n matrix.d * dpr,\n matrix.e * dpr,\n matrix.f * dpr\n );\n setTransform && this.setTransformForCurrent();\n }\n\n resetTransform(setTransform: boolean = true, dpr: number = this.dpr) {\n this.setTransform(dpr, 0, 0, dpr, 0, 0);\n setTransform && this.setTransformForCurrent();\n }\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n transform(a: number, b: number, c: number, d: number, e: number, f: number, setTransform: boolean = true) {\n this.matrix.multiply(a, b, c, d, e, f);\n setTransform && this.setTransformForCurrent();\n }\n transformFromMatrix(matrix: Matrix, setTransform?: boolean): void {\n this.matrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n setTransform && this.setTransformForCurrent();\n }\n\n translate(x: number, y: number, setTransform: boolean = true) {\n this.matrix.translate(x, y);\n setTransform && this.setTransformForCurrent();\n }\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees(deg: number, setTransform: boolean = true) {\n const rad = (deg * Math.PI) / 180;\n this.rotate(rad, setTransform);\n }\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout(rad: number, x: number, y: number, setTransform: boolean = true) {\n this.translate(x, y, false);\n this.rotate(rad, false);\n this.translate(-x, -y, false);\n setTransform && this.setTransformForCurrent();\n }\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout(deg: number, x: number, y: number, setTransform: boolean = true) {\n this.translate(x, y, false);\n this.rotateDegrees(deg, false);\n this.translate(-x, -y, false);\n setTransform && this.setTransformForCurrent();\n }\n\n // /**\n // * 全局坐标 -> 当前矩阵的局部坐标\n // * @param x x\n // * @param y y\n // */\n // transformPoint(x: number, y: number): Point {\n // const inverseMatrix = this.matrix.getInverse();\n // // dpr\n // x = x * this.dpr;\n // y = y * this.dpr;\n // return new Point(\n // x * inverseMatrix.a + y * inverseMatrix.c + inverseMatrix.e,\n // x * inverseMatrix.b + y * inverseMatrix.d + inverseMatrix.f\n // );\n // }\n\n // /**\n // * 坐标转换\n // * @param x x\n // * @param y y\n // */\n // transformPoint2(x: number, y: number): Point {\n // const inverseMatrix = this.matrix;\n // return new Point(\n // x * inverseMatrix.a + y * inverseMatrix.c + inverseMatrix.e,\n // x * inverseMatrix.b + y * inverseMatrix.d + inverseMatrix.f\n // );\n // }\n\n // transformPoint3(x: number, y: number, matrix: Matrix): Point {\n // // dpr\n // x = x * this.dpr;\n // y = y * this.dpr;\n // return new Point(x * matrix.a + y * matrix.c + matrix.e, x * matrix.b + y * matrix.d + matrix.f);\n // }\n\n //////// 代理方法\n // isPointInStroke ,drawFocusIfNeeded 方法没有代理,如有需要再添加\n\n beginPath() {\n this.path.clear();\n }\n\n clip(fillRule?: CanvasFillRule): void;\n clip(path: Path2D, fillRule?: CanvasFillRule): void;\n clip(path?: Path2D | CanvasFillRule, fillRule?: CanvasFillRule) {\n return;\n }\n\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) {\n this.path.arc(x, y, radius, startAngle, endAngle, anticlockwise);\n }\n\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n arcTo(x1: number, y1: number, x2: number, y2: number, radiusX: number) {\n this.path.arcTo(x1, y1, x2, y2, radiusX);\n }\n\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.path.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n\n closePath() {\n this.path.closePath();\n }\n\n ellipse(\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n return;\n }\n lineTo(x: number, y: number) {\n this.path.lineTo(x, y);\n }\n\n moveTo(x: number, y: number) {\n this.path.moveTo(x, y);\n }\n\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.path.quadraticCurveTo(cpx, cpy, x, y);\n }\n\n rect(x: number, y: number, w: number, h: number) {\n this.path.rect(x, y, w, h);\n }\n\n createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData {\n return null;\n }\n\n createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient {\n throw new Error('不支持createLinearGradient');\n }\n\n createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern {\n throw new Error('不支持createPattern');\n }\n\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient {\n throw new Error('不支持createRadialGradient');\n }\n\n createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData {\n return null;\n }\n\n // createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradient | null {\n // // let edit = false;\n // // let pattern: CanvasPattern | null;\n // // // eslint-disable-next-line @typescript-eslint/no-this-alias\n // // const ctx = this;\n // // const obj: IConicalGradient = {\n // // stops: [],\n // // addColorStop(offset: number, color: string) {\n // // this.stops.push([offset, color]);\n // // edit = true;\n // // },\n // // GetPattern(minW: number, minH: number, deltaAngle?: number): CanvasPattern | null {\n // // if (edit) {\n // // if (!deltaAngle) deltaAngle = endAngle - startAngle;\n // // pattern = createConicalGradient(ctx, this.stops, x, y, deltaAngle, startAngle, endAngle, minW, minH);\n // // edit = false;\n // // }\n // // return pattern;\n // // }\n // // };\n // // return obj;\n // }\n\n // fill(fillRule?: CanvasFillRule): void;\n // fill(path?: Path2D, fillRule?: CanvasFillRule): void;\n fill(path?: Path2D, fillRule?: CanvasFillRule) {\n return;\n }\n\n fillRect(x: number, y: number, width: number, height: number) {\n this.path.rect(x, y, width, height);\n }\n\n clearRect(x: number, y: number, w: number, h: number) {\n return;\n }\n\n fillText(text: string, x: number, y: number) {\n return;\n }\n\n getImageData(sx: number, sy: number, sw: number, sh: number): ImageData {\n return null;\n }\n\n getLineDash(): number[] {\n return [];\n }\n\n isPointInPath(x: number, y: number) {\n this.matrix.transformPoint({ x, y }, globalPoint);\n return contain(this.path.commandList, globalPoint.x, globalPoint.y);\n }\n\n isPointInStroke(x: number, y: number) {\n if (!this.lineWidth) {\n return false;\n }\n this.matrix.transformPoint({ x, y }, globalPoint);\n const lineWidth = getScaledStroke(this, this.lineWidth, this.dpr);\n return containStroke(this.path.commandList, lineWidth, globalPoint.x, globalPoint.y);\n }\n\n measureText(text: string): { width: number } {\n throw new Error('不支持measureText');\n }\n\n putImageData(imagedata: ImageData, dx: number, dy: number) {\n throw new Error('不支持measureText');\n }\n\n setLineDash(segments: number[]) {\n return;\n }\n\n stroke(path?: Path2D) {\n return;\n }\n\n strokeRect(x: number, y: number, width: number, height: number) {\n this.path.rect(x, y, width, height);\n }\n\n strokeText(text: string, x: number, y: number) {\n return;\n }\n\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n dstX: number,\n dstY: number\n ): void;\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ): void;\n drawImage(\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ): void;\n\n drawImage() {\n return;\n }\n\n setCommonStyle(\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n offsetX: number,\n offsetY: number,\n defaultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) {\n return;\n }\n\n _setCommonStyle(params: ISetCommonStyleParams, offsetX: number, offsetY: number, defaultParams?: ICommonStyleParams) {\n return;\n }\n\n setStrokeStyle(\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n offsetX: number,\n offsetY: number,\n defaultParams?: IStrokeStyleParams | IStrokeStyleParams[]\n ) {\n return;\n }\n _setStrokeStyle(params: ISetStrokeStyleParams, offsetX: number, offsetY: number, defaultParams?: IStrokeStyleParams) {\n return;\n }\n setTextStyleWithoutAlignBaseline(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n return;\n }\n setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams) {\n return;\n }\n\n draw() {\n return;\n }\n\n clearMatrix(setTransform: boolean = true, dpr: number = this.dpr) {\n this.setTransformFromMatrix(initMatrix, setTransform, dpr);\n }\n\n setClearMatrix(a: number, b: number, c: number, d: number, e: number, f: number) {\n this._clearMatrix.setValue(a, b, c, d, e, f);\n }\n\n onlyTranslate(dpr: number = this.dpr): boolean {\n return this.matrix.a === dpr && this.matrix.b === 0 && this.matrix.c === 0 && this.matrix.d === dpr;\n }\n\n release(...params: any): void {\n this.stack.forEach(m => matrixAllocate.free(m));\n this.stack.length = 0;\n return;\n }\n}\n"]}
@@ -2,4 +2,5 @@ export * from "./interpolate";
2
2
 
3
3
  export * from "./store";
4
4
 
5
- export * from "./colorName";
5
+ export * from "./colorName";
6
+ //# sourceMappingURL=index.js.map
@@ -69,5 +69,4 @@ export var BaseRenderContributionTime;
69
69
  !function(BaseRenderContributionTime) {
70
70
  BaseRenderContributionTime[BaseRenderContributionTime.beforeFillStroke = 0] = "beforeFillStroke",
71
71
  BaseRenderContributionTime[BaseRenderContributionTime.afterFillStroke = 1] = "afterFillStroke";
72
- }(BaseRenderContributionTime || (BaseRenderContributionTime = {}));
73
- //# sourceMappingURL=enums.js.map
72
+ }(BaseRenderContributionTime || (BaseRenderContributionTime = {}));
@@ -54,4 +54,5 @@ export function parseSvgPath(str) {
54
54
  } else result.push(currCommandData);
55
55
  } else result.push(currCommandData);
56
56
  return result;
57
- }
57
+ }
58
+ //# sourceMappingURL=path-svg.js.map
@@ -1,6 +1,8 @@
1
1
  export declare class PerformanceRAF {
2
2
  nextAnimationFrameCbs: FrameRequestCallback[];
3
+ private _rafHandle;
3
4
  addAnimationFrameCb(callback: FrameRequestCallback): number;
5
+ removeAnimationFrameCb(index: number): boolean;
4
6
  protected runAnimationFrame: (time: number) => void;
5
7
  protected tryRunAnimationFrameNextFrame: () => void;
6
8
  }
@@ -2,17 +2,22 @@ import { vglobal } from "../modules";
2
2
 
3
3
  export class PerformanceRAF {
4
4
  constructor() {
5
- this.nextAnimationFrameCbs = [], this.runAnimationFrame = time => {
5
+ this.nextAnimationFrameCbs = [], this._rafHandle = null, this.runAnimationFrame = time => {
6
+ this._rafHandle = null;
6
7
  const cbs = this.nextAnimationFrameCbs;
7
8
  this.nextAnimationFrameCbs = [];
8
- for (let i = 0; i < cbs.length; i++) cbs[i](time);
9
+ for (let i = 0; i < cbs.length; i++) cbs[i] && cbs[i](time);
9
10
  }, this.tryRunAnimationFrameNextFrame = () => {
10
- this.nextAnimationFrameCbs && 1 === this.nextAnimationFrameCbs.length && vglobal.getRequestAnimationFrame()(this.runAnimationFrame);
11
+ null === this._rafHandle && 0 !== this.nextAnimationFrameCbs.length && (this._rafHandle = vglobal.getRequestAnimationFrame()(this.runAnimationFrame));
11
12
  };
12
13
  }
13
14
  addAnimationFrameCb(callback) {
14
15
  return this.nextAnimationFrameCbs.push(callback), this.tryRunAnimationFrameNextFrame(),
15
16
  this.nextAnimationFrameCbs.length - 1;
16
17
  }
18
+ removeAnimationFrameCb(index) {
19
+ return index >= 0 && index < this.nextAnimationFrameCbs.length && (this.nextAnimationFrameCbs[index] = null,
20
+ !0);
21
+ }
17
22
  }
18
23
  //# sourceMappingURL=performance-raf.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/performance-raf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,MAAM,OAAO,cAAc;IAA3B;QACE,0BAAqB,GAA2B,EAAE,CAAC;QASzC,sBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACd;QACH,CAAC,CAAC;QAEQ,kCAA6B,GAAG,GAAG,EAAE;YAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBAC5E,OAAO;aACR;YACD,OAAO,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC;IArBC,mBAAmB,CAAC,QAA8B;QAChD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,CAAC;CAgBF","file":"performance-raf.js","sourcesContent":["import { vglobal } from '../modules';\n\n/**\n * 性能优化,将requestAnimationFrame的回调函数存储起来,在下一帧执行\n */\nexport class PerformanceRAF {\n nextAnimationFrameCbs: FrameRequestCallback[] = [];\n\n addAnimationFrameCb(callback: FrameRequestCallback) {\n this.nextAnimationFrameCbs.push(callback);\n // 下一帧执行nextAnimationFrameCbs\n this.tryRunAnimationFrameNextFrame();\n return this.nextAnimationFrameCbs.length - 1;\n }\n\n protected runAnimationFrame = (time: number) => {\n const cbs = this.nextAnimationFrameCbs;\n this.nextAnimationFrameCbs = [];\n for (let i = 0; i < cbs.length; i++) {\n cbs[i](time);\n }\n };\n\n protected tryRunAnimationFrameNextFrame = () => {\n if (!(this.nextAnimationFrameCbs && this.nextAnimationFrameCbs.length === 1)) {\n return;\n }\n vglobal.getRequestAnimationFrame()(this.runAnimationFrame);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/common/performance-raf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,MAAM,OAAO,cAAc;IAA3B;QACE,0BAAqB,GAA2B,EAAE,CAAC;QAC3C,eAAU,GAAkB,IAAI,CAAC;QAkB/B,sBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;YAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;oBACV,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACd;aACF;QACH,CAAC,CAAC;QAEQ,kCAA6B,GAAG,GAAG,EAAE;YAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvE,OAAO;aACR;YACD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/E,CAAC,CAAC;IACJ,CAAC;IAjCC,mBAAmB,CAAC,QAA8B;QAChD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAsB,CAAC,KAAa;QAClC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YAE3D,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACzC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CAmBF","file":"performance-raf.js","sourcesContent":["import { vglobal } from '../modules';\n\n/**\n * 性能优化,将requestAnimationFrame的回调函数存储起来,在下一帧执行\n */\nexport class PerformanceRAF {\n nextAnimationFrameCbs: FrameRequestCallback[] = [];\n private _rafHandle: number | null = null;\n\n addAnimationFrameCb(callback: FrameRequestCallback) {\n this.nextAnimationFrameCbs.push(callback);\n // 下一帧执行nextAnimationFrameCbs\n this.tryRunAnimationFrameNextFrame();\n return this.nextAnimationFrameCbs.length - 1;\n }\n\n removeAnimationFrameCb(index: number): boolean {\n if (index >= 0 && index < this.nextAnimationFrameCbs.length) {\n // Set to null instead of empty function to avoid linter error\n this.nextAnimationFrameCbs[index] = null;\n return true;\n }\n return false;\n }\n\n protected runAnimationFrame = (time: number) => {\n this._rafHandle = null;\n const cbs = this.nextAnimationFrameCbs;\n this.nextAnimationFrameCbs = [];\n for (let i = 0; i < cbs.length; i++) {\n if (cbs[i]) {\n cbs[i](time);\n }\n }\n };\n\n protected tryRunAnimationFrameNextFrame = () => {\n if (this._rafHandle !== null || this.nextAnimationFrameCbs.length === 0) {\n return;\n }\n this._rafHandle = vglobal.getRequestAnimationFrame()(this.runAnimationFrame);\n };\n}\n"]}
@@ -1,2 +1 @@
1
- class StageStore {}
2
- //# sourceMappingURL=store.js.map
1
+ class StageStore {}
@@ -7,6 +7,7 @@ export declare class DefaultGlobal implements IGlobal {
7
7
  private _isSafari?;
8
8
  private _isChrome?;
9
9
  private _isImageAnonymous?;
10
+ private _performanceRAFList;
10
11
  get env(): EnvType;
11
12
  private envContribution;
12
13
  get isImageAnonymous(): boolean;
@@ -43,6 +44,8 @@ export declare class DefaultGlobal implements IGlobal {
43
44
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
44
45
  dispatchEvent(event: any): boolean;
45
46
  getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
47
+ getSpecifiedRequestAnimationFrame(id: number): (callback: FrameRequestCallback) => number;
48
+ getSpecifiedCancelAnimationFrame(id: number): (handle: number) => boolean;
46
49
  getCancelAnimationFrame(): (h: number) => void;
47
50
  getElementById(str: string): HTMLElement | null;
48
51
  getRootElement(): HTMLElement | null;
package/es/core/global.js CHANGED
@@ -44,6 +44,8 @@ import { EnvContribution } from "../constants";
44
44
 
45
45
  import { Generator } from "../common/generator";
46
46
 
47
+ import { PerformanceRAF } from "../common/performance-raf";
48
+
47
49
  const defaultEnv = "browser";
48
50
 
49
51
  let DefaultGlobal = class {
@@ -90,8 +92,8 @@ let DefaultGlobal = class {
90
92
  this._env || this.setEnv("browser"), this.envContribution.applyStyles = support;
91
93
  }
92
94
  constructor(contributions) {
93
- this.contributions = contributions, this._isImageAnonymous = !0, this.id = Generator.GenAutoIncrementId(),
94
- this.hooks = {
95
+ this.contributions = contributions, this._isImageAnonymous = !0, this._performanceRAFList = [],
96
+ this.id = Generator.GenAutoIncrementId(), this.hooks = {
95
97
  onSetEnv: new SyncHook([ "lastEnv", "env", "global" ])
96
98
  }, this.measureTextMethod = "native", this.optimizeVisible = !1;
97
99
  }
@@ -148,6 +150,16 @@ let DefaultGlobal = class {
148
150
  getRequestAnimationFrame() {
149
151
  return this._env || this.setEnv("browser"), this.envContribution.getRequestAnimationFrame();
150
152
  }
153
+ getSpecifiedRequestAnimationFrame(id) {
154
+ this._env || this.setEnv("browser"), this._performanceRAFList[id] || (this._performanceRAFList[id] = new PerformanceRAF);
155
+ const performanceRAF = this._performanceRAFList[id];
156
+ return callback => performanceRAF.addAnimationFrameCb(callback);
157
+ }
158
+ getSpecifiedCancelAnimationFrame(id) {
159
+ if (this._env || this.setEnv("browser"), !this._performanceRAFList[id]) return () => !1;
160
+ const performanceRAF = this._performanceRAFList[id];
161
+ return handle => performanceRAF.removeAnimationFrameCb(handle);
162
+ }
151
163
  getCancelAnimationFrame() {
152
164
  return this._env || this.setEnv("browser"), this.envContribution.getCancelAnimationFrame();
153
165
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n private _isImageAnonymous?: boolean = true;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get isImageAnonymous(): boolean {\n return this._isImageAnonymous;\n }\n\n set isImageAnonymous(isImageAnonymous: boolean) {\n this._isImageAnonymous = isImageAnonymous;\n }\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | BinaryData, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n\n isMacOS(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.isMacOS();\n }\n\n copyToClipBoard(text: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.copyToClipBoard(text);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\nimport { PerformanceRAF } from '../common/performance-raf';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n private _isImageAnonymous?: boolean = true;\n private _performanceRAFList: PerformanceRAF[] = [];\n\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get isImageAnonymous(): boolean {\n return this._isImageAnonymous;\n }\n\n set isImageAnonymous(isImageAnonymous: boolean) {\n this._isImageAnonymous = isImageAnonymous;\n }\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n /**\n * 获取特定的requestAnimationFrame,同一个id底层共用一个原生的requestAnimationFrame\n * @param id 唯一标识,用于区分不同的requestAnimationFrame,请使用数字,不要太大,因为底层使用的是数组索引\n */\n getSpecifiedRequestAnimationFrame(id: number) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n\n // Check if PerformanceRAF instance exists for this id\n if (!this._performanceRAFList[id]) {\n this._performanceRAFList[id] = new PerformanceRAF();\n }\n\n const performanceRAF = this._performanceRAFList[id];\n\n // Return a function that adds the callback to the specific PerformanceRAF instance\n return (callback: FrameRequestCallback): number => {\n return performanceRAF.addAnimationFrameCb(callback);\n };\n }\n\n /**\n * 获取特定的cancelAnimationFrame,用于取消特定id的requestAnimationFrame\n * @param id\n */\n getSpecifiedCancelAnimationFrame(id: number) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n\n // Return no-op if no PerformanceRAF instance exists for this id\n if (!this._performanceRAFList[id]) {\n return () => false;\n }\n\n const performanceRAF = this._performanceRAFList[id];\n\n // Return a function that removes the callback from the specific PerformanceRAF instance\n return (handle: number): boolean => {\n return performanceRAF.removeAnimationFrameCb(handle);\n };\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | BinaryData, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n\n isMacOS(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.isMacOS();\n }\n\n copyToClipBoard(text: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.copyToClipBoard(text);\n }\n}\n"]}
@@ -65,6 +65,7 @@ export declare class Stage extends Group implements IStage {
65
65
  protected timeline: ITimeline;
66
66
  params: Partial<IStageParams>;
67
67
  protected tickedBeforeRender: boolean;
68
+ readonly rafId: number;
68
69
  constructor(params?: Partial<IStageParams>);
69
70
  initAnimate(params: Partial<IStageParams>): void;
70
71
  startAnimate(): void;
package/es/core/stage.js CHANGED
@@ -107,7 +107,7 @@ export class Stage extends Group {
107
107
  return this._eventSystem;
108
108
  }
109
109
  constructor(params = {}) {
110
- var _a;
110
+ var _a, _b;
111
111
  super({}), this.tickedBeforeRender = !0, this._onVisibleChange = visible => {
112
112
  if (!(this._skipRender < 0)) if (visible) {
113
113
  if (this.dirtyBounds) {
@@ -122,8 +122,7 @@ export class Stage extends Group {
122
122
  this.renderCount++, this._afterRender && this._afterRender(stage), this._afterNextRenderCbs && this._afterNextRenderCbs.forEach((cb => cb(stage))),
123
123
  this._afterNextRenderCbs = null, this.tickedBeforeRender = !1;
124
124
  }, this.afterTickCb = () => {
125
- var _a;
126
- this.tickedBeforeRender = !0, "performance" === (null === (_a = this.params.optimize) || void 0 === _a ? void 0 : _a.tickRenderMode) || "rendering" !== this.state && this.render();
125
+ this.tickedBeforeRender = !0, "rendering" !== this.state && this.render();
127
126
  }, this.params = params, this.theme = new Theme, this.hooks = {
128
127
  beforeRender: new SyncHook([ "stage" ]),
129
128
  afterRender: new SyncHook([ "stage" ])
@@ -150,13 +149,15 @@ export class Stage extends Group {
150
149
  this.hooks.beforeRender.tap("constructor", this.beforeRender), this.hooks.afterRender.tap("constructor", this.afterRender),
151
150
  this._beforeRender = params.beforeRender, this._afterRender = params.afterRender,
152
151
  this.supportInteractiveLayer = !1 !== params.interactiveLayer, params.optimize || (params.optimize = {
153
- animateMode: "performance"
152
+ tickRenderMode: "performance"
154
153
  }), this.optmize(params.optimize), params.background && isString(this._background) && this._background.includes("/") && this.setAttributes({
155
154
  background: this._background
156
- }), this.initAnimate(params);
155
+ }), this.initAnimate(params), this.rafId = null !== (_b = params.rafId) && void 0 !== _b ? _b : Math.floor(6 * Math.random());
157
156
  }
158
157
  initAnimate(params) {
158
+ var _a;
159
159
  this.createTicker && this.createTimeline && (this.ticker = params.ticker || this.createTicker(this),
160
+ "effect" !== (null === (_a = this.params.optimize) || void 0 === _a ? void 0 : _a.tickRenderMode) && this.ticker.setFPS(30),
160
161
  this.timeline = this.createTimeline(), this.ticker.addTimeline(this.timeline), this.ticker.on("tick", this.afterTickCb));
161
162
  }
162
163
  startAnimate() {
@@ -385,7 +386,7 @@ export class Stage extends Group {
385
386
  renderNextFrame(layers, force) {
386
387
  this.nextFrameRenderLayerSet.size !== this.childrenCount && (layers || this).forEach((layer => {
387
388
  this.nextFrameRenderLayerSet.add(layer);
388
- })), this.willNextFrameRender || (this.willNextFrameRender = !0, this.global.getRequestAnimationFrame()((() => {
389
+ })), this.willNextFrameRender || (this.willNextFrameRender = !0, this.global.getSpecifiedRequestAnimationFrame(this.rafId)((() => {
389
390
  this._doRenderInThisFrame(), this.willNextFrameRender = !1;
390
391
  })));
391
392
  }