@visactor/vrender-core 0.21.7 → 0.22.0-vstory.1
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.
- package/cjs/animate/Ticker/default-ticker.d.ts +2 -0
- package/cjs/animate/Ticker/default-ticker.js +7 -1
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.js +1 -1
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/custom-animate.js +14 -25
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/easing-func.d.ts +1 -0
- package/cjs/animate/easing-func.js +16 -0
- package/cjs/animate/easing-func.js.map +1 -0
- package/cjs/animate/easing.d.ts +4 -0
- package/cjs/animate/easing.js +24 -1
- package/cjs/animate/easing.js.map +1 -1
- package/cjs/animate/index.d.ts +1 -0
- package/cjs/animate/index.js +1 -1
- package/cjs/animate/index.js.map +1 -1
- package/cjs/color-string/store.js +1 -2
- package/cjs/common/3d-interceptor.js +2 -1
- package/cjs/common/bezier-utils.d.ts +3 -0
- package/cjs/common/bezier-utils.js +17 -2
- package/cjs/common/bezier-utils.js.map +1 -1
- package/cjs/common/custom-path2d.d.ts +4 -0
- package/cjs/common/custom-path2d.js +43 -11
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/common/render-area.js +0 -1
- package/cjs/common/render-command-list.js +2 -1
- package/cjs/common/segment/curve/arc.d.ts +4 -1
- package/cjs/common/segment/curve/arc.js +10 -1
- package/cjs/common/segment/curve/arc.js.map +1 -1
- package/cjs/common/segment/curve/base.d.ts +4 -1
- package/cjs/common/segment/curve/base.js.map +1 -1
- package/cjs/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/cjs/common/segment/curve/cubic-bezier.js +24 -3
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
- package/cjs/common/segment/curve/curve-context.js +5 -4
- package/cjs/common/segment/curve/curve-context.js.map +1 -1
- package/cjs/common/segment/curve/ellipse.d.ts +4 -1
- package/cjs/common/segment/curve/ellipse.js +9 -0
- package/cjs/common/segment/curve/ellipse.js.map +1 -1
- package/cjs/common/segment/curve/line.d.ts +4 -1
- package/cjs/common/segment/curve/line.js +18 -0
- package/cjs/common/segment/curve/line.js.map +1 -1
- package/cjs/common/segment/curve/move.d.ts +4 -1
- package/cjs/common/segment/curve/move.js +9 -0
- package/cjs/common/segment/curve/move.js.map +1 -1
- package/cjs/common/segment/curve/path.d.ts +2 -1
- package/cjs/common/segment/curve/path.js +5 -2
- package/cjs/common/segment/curve/path.js.map +1 -1
- package/cjs/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/cjs/common/segment/curve/quadratic-bezier.js +23 -5
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/cjs/common/shape/rect.d.ts +1 -1
- package/cjs/common/shape/rect.js +30 -25
- package/cjs/common/shape/rect.js.map +1 -1
- package/cjs/common/store.js +1 -1
- package/cjs/core/contributions/env/base-contribution.d.ts +2 -0
- package/cjs/core/contributions/env/base-contribution.js +6 -0
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/global.d.ts +5 -0
- package/cjs/core/global.js +13 -1
- package/cjs/core/global.js.map +1 -1
- package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/rect.js +28 -0
- package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
- package/cjs/graphic/builtin-symbol/utils.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/utils.js +5 -0
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/config.js +19 -5
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/graphic.js +15 -1
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/richtext/line.js +1 -1
- package/cjs/graphic/richtext/line.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.d.ts +1 -1
- package/cjs/graphic/richtext/paragraph.js +9 -4
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.d.ts +4 -0
- package/cjs/graphic/richtext/utils.js +19 -6
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.d.ts +1 -0
- package/cjs/graphic/richtext/wrapper.js +1 -1
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +7 -2
- package/cjs/graphic/richtext.js +33 -3
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/animate.d.ts +5 -39
- package/cjs/interface/animate.js.map +1 -1
- package/cjs/interface/context.d.ts +1 -0
- package/cjs/interface/context.js.map +1 -1
- package/cjs/interface/global.d.ts +5 -0
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic/group.d.ts +1 -0
- package/cjs/interface/graphic/group.js.map +1 -1
- package/cjs/interface/graphic/image.d.ts +1 -0
- package/cjs/interface/graphic/image.js.map +1 -1
- package/cjs/interface/graphic/path.d.ts +1 -0
- package/cjs/interface/graphic/path.js.map +1 -1
- package/cjs/interface/graphic/rect.d.ts +1 -0
- package/cjs/interface/graphic/rect.js.map +1 -1
- package/cjs/interface/graphic/richText.d.ts +2 -0
- package/cjs/interface/graphic/richText.js.map +1 -1
- package/cjs/interface/graphic/symbol.d.ts +2 -0
- package/cjs/interface/graphic/symbol.js.map +1 -1
- package/cjs/interface/graphic.d.ts +11 -2
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/path.d.ts +5 -0
- package/cjs/interface/path.js.map +1 -1
- package/cjs/interface/picker.d.ts +13 -0
- package/cjs/interface/picker.js.map +1 -1
- package/cjs/picker/constants.d.ts +2 -0
- package/cjs/picker/constants.js +3 -2
- package/cjs/picker/constants.js.map +1 -1
- package/cjs/picker/pick-interceptor.d.ts +7 -2
- package/cjs/picker/pick-interceptor.js +19 -2
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/pick-modules.js +7 -4
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +4 -2
- package/cjs/picker/picker-service.js +13 -12
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/edit-module.d.ts +15 -5
- package/cjs/plugins/builtin-plugin/edit-module.js +123 -42
- package/cjs/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +62 -29
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +346 -212
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.d.ts +1 -0
- package/cjs/render/contributions/render/base-render.js +20 -2
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +30 -2
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +2 -2
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +3 -3
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.js +2 -2
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +1 -1
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +15 -13
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +1 -2
- package/cjs/render/contributions/render/utils.js +4 -20
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/resource-loader/loader.js +1 -1
- package/cjs/resource-loader/loader.js.map +1 -1
- package/dist/index.es.js +8652 -7685
- package/es/animate/Ticker/default-ticker.d.ts +2 -0
- package/es/animate/Ticker/default-ticker.js +7 -1
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.js +1 -1
- package/es/animate/animate.js.map +1 -1
- package/es/animate/custom-animate.js +14 -25
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/easing-func.d.ts +1 -0
- package/es/animate/easing-func.js +10 -0
- package/es/animate/easing-func.js.map +1 -0
- package/es/animate/easing.d.ts +4 -0
- package/es/animate/easing.js +24 -1
- package/es/animate/easing.js.map +1 -1
- package/es/animate/index.d.ts +1 -0
- package/es/animate/index.js +2 -0
- package/es/animate/index.js.map +1 -1
- package/es/color-string/store.js +1 -2
- package/es/common/3d-interceptor.js +2 -1
- package/es/common/bezier-utils.d.ts +3 -0
- package/es/common/bezier-utils.js +14 -0
- package/es/common/bezier-utils.js.map +1 -1
- package/es/common/custom-path2d.d.ts +4 -0
- package/es/common/custom-path2d.js +44 -12
- package/es/common/custom-path2d.js.map +1 -1
- package/es/common/render-area.js +1 -2
- package/es/common/render-command-list.js +2 -1
- package/es/common/segment/curve/arc.d.ts +4 -1
- package/es/common/segment/curve/arc.js +10 -1
- package/es/common/segment/curve/arc.js.map +1 -1
- package/es/common/segment/curve/base.d.ts +4 -1
- package/es/common/segment/curve/base.js.map +1 -1
- package/es/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/es/common/segment/curve/cubic-bezier.js +22 -1
- package/es/common/segment/curve/cubic-bezier.js.map +1 -1
- package/es/common/segment/curve/curve-context.js +6 -3
- package/es/common/segment/curve/curve-context.js.map +1 -1
- package/es/common/segment/curve/ellipse.d.ts +4 -1
- package/es/common/segment/curve/ellipse.js +9 -0
- package/es/common/segment/curve/ellipse.js.map +1 -1
- package/es/common/segment/curve/line.d.ts +4 -1
- package/es/common/segment/curve/line.js +18 -0
- package/es/common/segment/curve/line.js.map +1 -1
- package/es/common/segment/curve/move.d.ts +4 -1
- package/es/common/segment/curve/move.js +9 -0
- package/es/common/segment/curve/move.js.map +1 -1
- package/es/common/segment/curve/path.d.ts +2 -1
- package/es/common/segment/curve/path.js +5 -2
- package/es/common/segment/curve/path.js.map +1 -1
- package/es/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/es/common/segment/curve/quadratic-bezier.js +28 -5
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/es/common/shape/rect.d.ts +1 -1
- package/es/common/shape/rect.js +30 -25
- package/es/common/shape/rect.js.map +1 -1
- package/es/common/store.js +1 -1
- package/es/core/contributions/env/base-contribution.d.ts +2 -0
- package/es/core/contributions/env/base-contribution.js +6 -0
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/global.d.ts +5 -0
- package/es/core/global.js +14 -1
- package/es/core/global.js.map +1 -1
- package/es/graphic/builtin-symbol/rect.d.ts +2 -1
- package/es/graphic/builtin-symbol/rect.js +28 -0
- package/es/graphic/builtin-symbol/rect.js.map +1 -1
- package/es/graphic/builtin-symbol/utils.d.ts +2 -1
- package/es/graphic/builtin-symbol/utils.js +5 -0
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/config.js +19 -5
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/graphic.js +15 -1
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/richtext/line.js +1 -1
- package/es/graphic/richtext/line.js.map +1 -1
- package/es/graphic/richtext/paragraph.d.ts +1 -1
- package/es/graphic/richtext/paragraph.js +9 -4
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.d.ts +4 -0
- package/es/graphic/richtext/utils.js +15 -2
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.d.ts +1 -0
- package/es/graphic/richtext/wrapper.js +1 -1
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.d.ts +7 -2
- package/es/graphic/richtext.js +33 -4
- package/es/graphic/richtext.js.map +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +4 -0
- package/es/index.js.map +1 -1
- package/es/interface/animate.d.ts +5 -39
- package/es/interface/animate.js.map +1 -1
- package/es/interface/context.d.ts +1 -0
- package/es/interface/context.js.map +1 -1
- package/es/interface/global.d.ts +5 -0
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic/group.d.ts +1 -0
- package/es/interface/graphic/group.js.map +1 -1
- package/es/interface/graphic/image.d.ts +1 -0
- package/es/interface/graphic/image.js.map +1 -1
- package/es/interface/graphic/path.d.ts +1 -0
- package/es/interface/graphic/path.js.map +1 -1
- package/es/interface/graphic/rect.d.ts +1 -0
- package/es/interface/graphic/rect.js.map +1 -1
- package/es/interface/graphic/richText.d.ts +2 -0
- package/es/interface/graphic/richText.js.map +1 -1
- package/es/interface/graphic/symbol.d.ts +2 -0
- package/es/interface/graphic/symbol.js.map +1 -1
- package/es/interface/graphic.d.ts +11 -2
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/path.d.ts +5 -0
- package/es/interface/path.js.map +1 -1
- package/es/interface/picker.d.ts +13 -0
- package/es/interface/picker.js.map +1 -1
- package/es/picker/constants.d.ts +2 -0
- package/es/picker/constants.js +4 -0
- package/es/picker/constants.js.map +1 -1
- package/es/picker/pick-interceptor.d.ts +7 -2
- package/es/picker/pick-interceptor.js +19 -1
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/pick-modules.js +5 -3
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +4 -2
- package/es/picker/picker-service.js +13 -13
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/edit-module.d.ts +15 -5
- package/es/plugins/builtin-plugin/edit-module.js +119 -40
- package/es/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +62 -29
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js +349 -211
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/base-render.d.ts +1 -0
- package/es/render/contributions/render/base-render.js +21 -2
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +26 -0
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/group-render.js +2 -2
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +3 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.js +2 -2
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +1 -1
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +16 -14
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +1 -2
- package/es/render/contributions/render/utils.js +0 -18
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/resource-loader/loader.js +1 -1
- package/es/resource-loader/loader.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/curve-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/curve-context.ts"],"names":[],"mappings":"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","file":"curve-context.js","sourcesContent":["import type { IPath2D, ICustomPath2D, ILineCurve, ICubicBezierCurve, IQuadraticBezierCurve } from '../../../interface';\nimport { Point } from '@visactor/vutils';\nimport { LineCurve } from './line';\nimport { CubicBezierCurve } from './cubic-bezier';\nimport { QuadraticBezierCurve } from './quadratic-bezier';\n\nexport class CurveContext implements IPath2D {\n declare path: ICustomPath2D;\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n\n constructor(path: ICustomPath2D) {\n this.path = path;\n this._lastX = this._lastY = this._startX = this._startY = 0;\n }\n moveTo(x: number, y: number) {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n return this;\n }\n lineTo(x: number, y: number) {\n const curve = this.addLinearCurve(x, y);\n this.path.addCurve(curve);\n this._lastX = x;\n this._lastY = y;\n }\n // linear\n protected addLinearCurve(x: number, y: number): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n return curve;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n const curve: IQuadraticBezierCurve = new QuadraticBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(aCPx, aCPy),\n new Point(aX, aY)\n );\n this.path.addCurve(curve);\n this._lastX = aX;\n this._lastY = aY;\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n const curve: ICubicBezierCurve = new CubicBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(cp1x, cp1y),\n new Point(cp2x, cp2y),\n new Point(x, y)\n );\n this.path.addCurve(curve);\n this._lastX = x;\n this._lastY = y;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n throw new Error('CurveContext不支持调用arcTo');\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n throw new Error('CurveContext不支持调用ellipse');\n }\n rect(x: number, y: number, w: number, h: number) {\n throw new Error('CurveContext不支持调用rect');\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n throw new Error('CurveContext不支持调用arc');\n }\n closePath(): void {\n if (this.path.curves.length < 2) {\n return;\n }\n this.lineTo(this._startX, this._startY);\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IPoint, IPointLike } from '@visactor/vutils';
|
|
2
|
-
import type { IEllipseCurve, IDirection } from '../../../interface';
|
|
2
|
+
import type { IEllipseCurve, IDirection, IPath2D } from '../../../interface';
|
|
3
3
|
import { Curve } from './base';
|
|
4
4
|
export declare class EllipseCurve extends Curve implements IEllipseCurve {
|
|
5
5
|
type: number;
|
|
@@ -15,4 +15,7 @@ export declare class EllipseCurve extends Curve implements IEllipseCurve {
|
|
|
15
15
|
getAngleAt(t: number): number;
|
|
16
16
|
protected calcLength(): number;
|
|
17
17
|
protected calcProjLength(direction: IDirection): number;
|
|
18
|
+
draw(path: IPath2D, percent: number): void;
|
|
19
|
+
getYAt(x: number): number;
|
|
20
|
+
includeX(x: number): boolean;
|
|
18
21
|
}
|
|
@@ -20,5 +20,14 @@ export class EllipseCurve extends Curve {
|
|
|
20
20
|
calcProjLength(direction) {
|
|
21
21
|
throw new Error("QuadraticBezierCurve暂不支持updateLength");
|
|
22
22
|
}
|
|
23
|
+
draw(path, percent) {
|
|
24
|
+
throw new Error("暂不支持");
|
|
25
|
+
}
|
|
26
|
+
getYAt(x) {
|
|
27
|
+
throw new Error("QuadraticBezierCurve暂不支持getYAt");
|
|
28
|
+
}
|
|
29
|
+
includeX(x) {
|
|
30
|
+
throw new Error("QuadraticBezierCurve暂不支持includeX");
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
//# sourceMappingURL=ellipse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/ellipse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,YAAa,SAAQ,KAAK;IASrC,YACE,EAAU,EACV,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,aAAuB;QAEvB,KAAK,EAAE,CAAC;QAjBV,SAAI,GAAW,aAAa,CAAC,YAAY,CAAC;QAkBxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"ellipse.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IEllipseCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class EllipseCurve extends Curve implements IEllipseCurve {\n type: number = CurveTypeEnum.EllipseCurve;\n declare p0: IPoint;\n declare radiusX: number;\n declare radiusY: number;\n declare rotation: number;\n declare startAngle: number;\n declare endAngle: number;\n declare anticlockwise?: boolean;\n constructor(\n p0: IPoint,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n super();\n this.p0 = p0;\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.anticlockwise = anticlockwise;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('EllipseCurve暂不支持getPointAt');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n protected calcLength(): number {\n throw new Error('EllipseCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/ellipse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,YAAa,SAAQ,KAAK;IASrC,YACE,EAAU,EACV,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,aAAuB;QAEvB,KAAK,EAAE,CAAC;QAjBV,SAAI,GAAW,aAAa,CAAC,YAAY,CAAC;QAkBxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAa,EAAE,OAAe;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,CAAS;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ,CAAC,CAAS;QAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF","file":"ellipse.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IEllipseCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class EllipseCurve extends Curve implements IEllipseCurve {\n type: number = CurveTypeEnum.EllipseCurve;\n declare p0: IPoint;\n declare radiusX: number;\n declare radiusY: number;\n declare rotation: number;\n declare startAngle: number;\n declare endAngle: number;\n declare anticlockwise?: boolean;\n constructor(\n p0: IPoint,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n super();\n this.p0 = p0;\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.anticlockwise = anticlockwise;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('EllipseCurve暂不支持getPointAt');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n protected calcLength(): number {\n throw new Error('EllipseCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n\n draw(path: IPath2D, percent: number) {\n throw new Error('暂不支持');\n }\n getYAt(x: number): number {\n throw new Error('QuadraticBezierCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('QuadraticBezierCurve暂不支持includeX');\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IPoint, IPointLike } from '@visactor/vutils';
|
|
2
|
-
import type { ILineCurve, IDirection } from '../../../interface';
|
|
2
|
+
import type { ILineCurve, IDirection, IPath2D } from '../../../interface';
|
|
3
3
|
import { Curve } from './base';
|
|
4
4
|
export declare function divideLinear(curve: ILineCurve, t: number): ILineCurve[];
|
|
5
5
|
export declare class LineCurve extends Curve implements ILineCurve {
|
|
@@ -15,4 +15,7 @@ export declare class LineCurve extends Curve implements ILineCurve {
|
|
|
15
15
|
protected _validPoint(): boolean;
|
|
16
16
|
protected calcLength(): number;
|
|
17
17
|
protected calcProjLength(direction: IDirection): number;
|
|
18
|
+
draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
|
|
19
|
+
includeX(x: number): boolean;
|
|
20
|
+
getYAt(x: number): number;
|
|
18
21
|
}
|
|
@@ -30,5 +30,23 @@ export class LineCurve extends Curve {
|
|
|
30
30
|
calcProjLength(direction) {
|
|
31
31
|
return direction === Direction.ROW ? abs(this.p0.x - this.p1.x) : direction === Direction.COLUMN ? abs(this.p0.y - this.p1.y) : 0;
|
|
32
32
|
}
|
|
33
|
+
draw(path, x, y, sx, sy, percent) {
|
|
34
|
+
if (path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y), percent >= 1) path.lineTo(this.p1.x * sx + x, this.p1.y * sy + y); else if (percent > 0) {
|
|
35
|
+
const p = this.getPointAt(percent);
|
|
36
|
+
path.lineTo(p.x * sx + x, p.y * sy + y);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
includeX(x) {
|
|
40
|
+
return x >= this.p0.x && x <= this.p1.x || x >= this.p1.x && x <= this.p0.x;
|
|
41
|
+
}
|
|
42
|
+
getYAt(x) {
|
|
43
|
+
if (this.includeX(x)) {
|
|
44
|
+
let minP = this.p0, maxP = this.p1;
|
|
45
|
+
this.p0.x > this.p1.x && (minP = this.p1, maxP = this.p0);
|
|
46
|
+
const percent = (x - minP.x) / (maxP.x - minP.x);
|
|
47
|
+
return minP.y + percent * (maxP.y - minP.y);
|
|
48
|
+
}
|
|
49
|
+
return 1 / 0;
|
|
50
|
+
}
|
|
33
51
|
}
|
|
34
52
|
//# sourceMappingURL=line.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,CAAS;IACvD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAGzB,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAG7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAOlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAPV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAQrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAES,WAAW;QACnB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,cAAc,CAAC,SAAqB;QAC5C,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;aAAM,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\n\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y);\n if (percent >= 1) {\n path.lineTo(this.p1.x * sx + x, this.p1.y * sy + y);\n } else if (percent > 0) {\n const p = this.getPointAt(percent);\n path.lineTo(p.x * sx + x, p.y * sy + y);\n }\n }\n includeX(x: number): boolean {\n return (x >= this.p0.x && x <= this.p1.x) || (x >= this.p1.x && x <= this.p0.x);\n }\n\n getYAt(x: number): number {\n if (this.includeX(x)) {\n let minP = this.p0;\n let maxP = this.p1;\n if (this.p0.x > this.p1.x) {\n minP = this.p1;\n maxP = this.p0;\n }\n const percent = (x - minP.x) / (maxP.x - minP.x);\n return minP.y + percent * (maxP.y - minP.y);\n }\n return Infinity;\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IPoint, IPointLike } from '@visactor/vutils';
|
|
2
|
-
import type { IMoveCurve, IDirection } from '../../../interface';
|
|
2
|
+
import type { IMoveCurve, IDirection, IPath2D } from '../../../interface';
|
|
3
3
|
import { Curve } from './base';
|
|
4
4
|
export declare class MoveCurve extends Curve implements IMoveCurve {
|
|
5
5
|
type: number;
|
|
@@ -10,4 +10,7 @@ export declare class MoveCurve extends Curve implements IMoveCurve {
|
|
|
10
10
|
getPointAt(t: number): IPointLike;
|
|
11
11
|
protected calcLength(): number;
|
|
12
12
|
protected calcProjLength(direction: IDirection): number;
|
|
13
|
+
draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
|
|
14
|
+
includeX(x: number): boolean;
|
|
15
|
+
getYAt(x: number): number;
|
|
13
16
|
}
|
|
@@ -18,5 +18,14 @@ export class MoveCurve extends Curve {
|
|
|
18
18
|
calcProjLength(direction) {
|
|
19
19
|
throw new Error("QuadraticBezierCurve暂不支持updateLength");
|
|
20
20
|
}
|
|
21
|
+
draw(path, x, y, sx, sy, percent) {
|
|
22
|
+
path.moveTo(this.p1.x * sx + x, this.p1.y * sy + y);
|
|
23
|
+
}
|
|
24
|
+
includeX(x) {
|
|
25
|
+
return !1;
|
|
26
|
+
}
|
|
27
|
+
getYAt(x) {
|
|
28
|
+
return 1 / 0;
|
|
29
|
+
}
|
|
21
30
|
}
|
|
22
31
|
//# sourceMappingURL=move.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAIlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAJV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAKrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAIlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAJV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAKrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAa,EAAE,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,OAAe;QAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,QAAQ,CAAC,CAAS;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,CAAS;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p1.x * sx + x, this.p1.y * sy + y);\n }\n includeX(x: number): boolean {\n return false;\n }\n getYAt(x: number): number {\n return Infinity;\n }\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';
|
|
2
2
|
import type { ICurvePath, ICurve } from '../../../interface';
|
|
3
3
|
export declare class CurvePath implements ICurvePath<IPoint> {
|
|
4
|
-
|
|
4
|
+
_curves: ICurve<IPoint>[];
|
|
5
5
|
bounds: IAABBBounds;
|
|
6
6
|
constructor();
|
|
7
|
+
get curves(): ICurve<IPoint>[];
|
|
7
8
|
getCurveLengths(): number[];
|
|
8
9
|
getPointAt(t: number): IPointLike;
|
|
9
10
|
getLength(): number;
|
|
@@ -2,10 +2,13 @@ import { AABBBounds } from "@visactor/vutils";
|
|
|
2
2
|
|
|
3
3
|
export class CurvePath {
|
|
4
4
|
constructor() {
|
|
5
|
-
this.
|
|
5
|
+
this._curves = [], this.bounds = new AABBBounds;
|
|
6
|
+
}
|
|
7
|
+
get curves() {
|
|
8
|
+
return this._curves;
|
|
6
9
|
}
|
|
7
10
|
getCurveLengths() {
|
|
8
|
-
return this.
|
|
11
|
+
return this._curves.map((curve => curve.getLength()));
|
|
9
12
|
}
|
|
10
13
|
getPointAt(t) {
|
|
11
14
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IAGpB;QACE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IAGpB;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,SAAS;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"path.js","sourcesContent":["import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { ICurvePath, ICurve } from '../../../interface';\n\nexport class CurvePath implements ICurvePath<IPoint> {\n _curves: ICurve<IPoint>[];\n bounds: IAABBBounds;\n constructor() {\n this._curves = [];\n this.bounds = new AABBBounds();\n }\n get curves(): ICurve<IPoint>[] {\n return this._curves;\n }\n\n getCurveLengths(): number[] {\n return this._curves.map(curve => curve.getLength());\n }\n getPointAt(t: number): IPointLike {\n return { x: 0, y: 0 };\n }\n getLength(): number {\n return 0;\n }\n getBounds() {\n return this.bounds;\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { IDirection, IQuadraticBezierCurve } from '../../../interface';
|
|
1
|
+
import type { IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';
|
|
2
2
|
import { Curve } from './base';
|
|
3
|
-
import type
|
|
3
|
+
import { type IPoint, type IPointLike } from '@visactor/vutils';
|
|
4
4
|
export declare class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {
|
|
5
5
|
type: number;
|
|
6
6
|
originP1?: IPointLike;
|
|
@@ -9,8 +9,12 @@ export declare class QuadraticBezierCurve extends Curve implements IQuadraticBez
|
|
|
9
9
|
readonly p1: IPoint;
|
|
10
10
|
readonly p2: IPoint;
|
|
11
11
|
constructor(p0: IPoint, p1: IPoint, p2: IPoint);
|
|
12
|
+
protected _validPoint(): boolean;
|
|
12
13
|
getPointAt(t: number): IPointLike;
|
|
13
14
|
protected calcLength(): number;
|
|
14
15
|
protected calcProjLength(direction: IDirection): number;
|
|
15
16
|
getAngleAt(t: number): number;
|
|
17
|
+
draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
|
|
18
|
+
getYAt(x: number): number;
|
|
19
|
+
includeX(x: number): boolean;
|
|
16
20
|
}
|
|
@@ -1,23 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { quadLength, quadPointAt } from "../../bezier-utils";
|
|
2
|
+
|
|
3
|
+
import { CurveTypeEnum, Direction } from "../../enums";
|
|
2
4
|
|
|
3
5
|
import { Curve } from "./base";
|
|
4
6
|
|
|
7
|
+
import { abs, atan2, max, min } from "@visactor/vutils";
|
|
8
|
+
|
|
9
|
+
import { divideQuad } from "./cubic-bezier";
|
|
10
|
+
|
|
5
11
|
export class QuadraticBezierCurve extends Curve {
|
|
6
12
|
constructor(p0, p1, p2) {
|
|
7
13
|
super(), this.type = CurveTypeEnum.QuadraticBezierCurve, this.p0 = p0, this.p1 = p1,
|
|
8
14
|
this.p2 = p2;
|
|
9
15
|
}
|
|
16
|
+
_validPoint() {
|
|
17
|
+
return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y);
|
|
18
|
+
}
|
|
10
19
|
getPointAt(t) {
|
|
11
|
-
|
|
20
|
+
if (!1 !== this.defined) return quadPointAt(this.p0, this.p1, this.p2, t);
|
|
21
|
+
throw new Error("defined为false的点不能getPointAt");
|
|
12
22
|
}
|
|
13
23
|
calcLength() {
|
|
14
|
-
|
|
24
|
+
return this._validPoint() ? quadLength(this.p0, this.p1, this.p2, 0) : 60;
|
|
15
25
|
}
|
|
16
26
|
calcProjLength(direction) {
|
|
17
|
-
|
|
27
|
+
return direction === Direction.ROW ? abs(this.p0.x - this.p2.x) : direction === Direction.COLUMN ? abs(this.p0.y - this.p2.y) : 0;
|
|
18
28
|
}
|
|
19
29
|
getAngleAt(t) {
|
|
20
|
-
|
|
30
|
+
const minT = max(t - .01, 0), maxT = min(t + .01, 1), minP = this.getPointAt(minT), maxP = this.getPointAt(maxT);
|
|
31
|
+
return atan2(maxP.y - minP.y, maxP.x - minP.x);
|
|
32
|
+
}
|
|
33
|
+
draw(path, x, y, sx, sy, percent) {
|
|
34
|
+
if (path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y), percent >= 1) path.quadraticCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y); else if (percent > 0) {
|
|
35
|
+
const [curve1] = divideQuad(this, percent);
|
|
36
|
+
path.quadraticCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getYAt(x) {
|
|
40
|
+
throw new Error("QuadraticBezierCurve暂不支持getYAt");
|
|
41
|
+
}
|
|
42
|
+
includeX(x) {
|
|
43
|
+
throw new Error("QuadraticBezierCurve暂不支持includeX");
|
|
21
44
|
}
|
|
22
45
|
}
|
|
23
46
|
//# sourceMappingURL=quadratic-bezier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"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","file":"quadratic-bezier.js","sourcesContent":["import type { IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';\nimport { quadLength, quadPointAt } from '../../bezier-utils';\nimport { CurveTypeEnum, Direction } from '../../enums';\nimport { Curve } from './base';\nimport { abs, atan2, max, min, type IPoint, type IPointLike } from '@visactor/vutils';\nimport { divideQuad } from './cubic-bezier';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n\n protected _validPoint(): boolean {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y);\n }\n\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return quadPointAt(this.p0, this.p1, this.p2, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n protected calcLength(): number {\n if (this._validPoint()) {\n return quadLength(this.p0, this.p1, this.p2, 0);\n }\n // 默认长度不好给\n return 60;\n }\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p2.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p2.y);\n }\n return 0;\n }\n\n getAngleAt(t: number): number {\n const minT = max(t - 0.01, 0);\n const maxT = min(t + 0.01, 1);\n const minP = this.getPointAt(minT);\n const maxP = this.getPointAt(maxT);\n return atan2(maxP.y - minP.y, maxP.x - minP.x);\n }\n\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y);\n if (percent >= 1) {\n path.quadraticCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y);\n } else if (percent > 0) {\n const [curve1] = divideQuad(this, percent);\n path.quadraticCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y);\n }\n }\n\n getYAt(x: number): number {\n throw new Error('QuadraticBezierCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('QuadraticBezierCurve暂不支持includeX');\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IContext2d, ICustomPath2D } from '../../interface';
|
|
2
2
|
type IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;
|
|
3
|
-
export declare function createRectPath(path: ICustomPath2D | IContext2d, x: number, y: number, width: number, height: number, rectCornerRadius: number | number[], edgeCb?: IEdgeCb[]): void | ICustomPath2D | IContext2d;
|
|
3
|
+
export declare function createRectPath(path: ICustomPath2D | IContext2d, x: number, y: number, width: number, height: number, rectCornerRadius: number | number[], roundCorner?: boolean, edgeCb?: IEdgeCb[]): void | ICustomPath2D | IContext2d;
|
|
4
4
|
export {};
|
package/es/common/shape/rect.js
CHANGED
|
@@ -2,10 +2,10 @@ import { isNumber, arrayEqual, pi, abs } from "@visactor/vutils";
|
|
|
2
2
|
|
|
3
3
|
const halfPi = pi / 2;
|
|
4
4
|
|
|
5
|
-
export function createRectPath(path, x, y, width, height, rectCornerRadius, edgeCb) {
|
|
5
|
+
export function createRectPath(path, x, y, width, height, rectCornerRadius, roundCorner = !0, edgeCb) {
|
|
6
6
|
let cornerRadius;
|
|
7
|
-
if (
|
|
8
|
-
isNumber(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
|
|
7
|
+
if (Array.isArray(roundCorner) && (edgeCb = roundCorner, roundCorner = !0), width < 0 && (x += width,
|
|
8
|
+
width = -width), height < 0 && (y += height, height = -height), isNumber(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
|
|
9
9
|
const cornerRadiusArr = rectCornerRadius;
|
|
10
10
|
let cr0, cr1;
|
|
11
11
|
switch (cornerRadiusArr.length) {
|
|
@@ -29,28 +29,33 @@ export function createRectPath(path, x, y, width, height, rectCornerRadius, edge
|
|
|
29
29
|
} else cornerRadius = [ 0, 0, 0, 0 ];
|
|
30
30
|
if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) return path.rect(x, y, width, height);
|
|
31
31
|
const [leftTop, rightTop, rightBottom, leftBottom] = [ [ x, y ], [ x + width, y ], [ x + width, y + height ], [ x, y + height ] ], maxCornerRadius = Math.min(width / 2, height / 2), _cornerRadius = [ Math.min(maxCornerRadius, cornerRadius[0]), Math.min(maxCornerRadius, cornerRadius[1]), Math.min(maxCornerRadius, cornerRadius[2]), Math.min(maxCornerRadius, cornerRadius[3]) ], leftTopPoint1 = [ leftTop[0] + _cornerRadius[0], leftTop[1] ], leftTopPoint2 = [ leftTop[0], leftTop[1] + _cornerRadius[0] ], rightTopPoint1 = [ rightTop[0] - _cornerRadius[1], rightTop[1] ], rightTopPoint2 = [ rightTop[0], rightTop[1] + _cornerRadius[1] ], rightBottomPoint1 = [ rightBottom[0] - _cornerRadius[2], rightBottom[1] ], rightBottomPoint2 = [ rightBottom[0], rightBottom[1] - _cornerRadius[2] ], leftBottomPoint1 = [ leftBottom[0] + _cornerRadius[3], leftBottom[1] ], leftBottomPoint2 = [ leftBottom[0], leftBottom[1] - _cornerRadius[3] ];
|
|
32
|
-
if (path.moveTo(leftTopPoint1[0], leftTopPoint1[1]),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
32
|
+
if (path.moveTo(leftTopPoint1[0], leftTopPoint1[1]), roundCorner) {
|
|
33
|
+
if (edgeCb && edgeCb[0] ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1]) : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]),
|
|
34
|
+
!arrayEqual(rightTopPoint1, rightTopPoint2)) {
|
|
35
|
+
edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);
|
|
36
|
+
const centerX = rightTopPoint1[0], centerY = rightTopPoint1[1] + _cornerRadius[1];
|
|
37
|
+
path.arc(centerX, centerY, _cornerRadius[1], -halfPi, 0, !1);
|
|
38
|
+
}
|
|
39
|
+
if (edgeCb && edgeCb[1] ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1]) : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]),
|
|
40
|
+
!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {
|
|
41
|
+
const centerX = rightBottomPoint2[0] - _cornerRadius[2], centerY = rightBottomPoint2[1];
|
|
42
|
+
edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]),
|
|
43
|
+
path.arc(centerX, centerY, _cornerRadius[2], 0, halfPi, !1);
|
|
44
|
+
}
|
|
45
|
+
if (edgeCb && edgeCb[2] ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1]) : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]),
|
|
46
|
+
!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {
|
|
47
|
+
const centerX = leftBottomPoint1[0], centerY = leftBottomPoint1[1] - _cornerRadius[3];
|
|
48
|
+
edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]), path.arc(centerX, centerY, _cornerRadius[3], halfPi, pi, !1);
|
|
49
|
+
}
|
|
50
|
+
if (edgeCb && edgeCb[3] ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1]) : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]),
|
|
51
|
+
!arrayEqual(leftTopPoint1, leftTopPoint2)) {
|
|
52
|
+
const centerX = leftTopPoint1[0], centerY = leftTopPoint1[1] + _cornerRadius[0];
|
|
53
|
+
edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]), path.arc(centerX, centerY, _cornerRadius[0], pi, pi + halfPi, !1);
|
|
54
|
+
}
|
|
55
|
+
} else edgeCb && edgeCb[0] ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1]) : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]),
|
|
56
|
+
edgeCb && edgeCb[1] ? edgeCb[1](rightTopPoint1[0], rightTopPoint1[1], rightBottomPoint1[0], rightBottomPoint1[1]) : path.lineTo(rightBottomPoint1[0], rightBottomPoint1[1]),
|
|
57
|
+
edgeCb && edgeCb[2] ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1]) : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]),
|
|
58
|
+
edgeCb && edgeCb[2] ? edgeCb[2](leftBottomPoint1[0], leftBottomPoint1[1], leftTopPoint1[0], leftTopPoint1[1]) : path.lineTo(leftTopPoint1[0], leftTopPoint1[1]);
|
|
54
59
|
return !edgeCb && path.closePath(), path;
|
|
55
60
|
}
|
|
56
61
|
//# sourceMappingURL=rect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGjE,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAGtB,MAAM,UAAU,cAAc,CAC5B,IAAgC,EAChC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,gBAAmC,EACnC,MAAkB;IAElB,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,CAAC,IAAI,KAAK,CAAC;QACX,KAAK,GAAG,CAAC,KAAK,CAAC;KAChB;IACD,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,CAAC,IAAI,MAAM,CAAC;QACZ,MAAM,GAAG,CAAC,MAAM,CAAC;KAClB;IAED,IAAI,YAAkB,CAAC;IACvB,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE;QACpC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACzC,YAAY,GAAG;YACL,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;SACzB,CAAC;KACH;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC1C,MAAM,eAAe,GAAa,gBAA4B,CAAC;QAC/D,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,QAAQ,eAAe,CAAC,MAAM,EAAE;YAC9B,KAAK,CAAC;gBACJ,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,CAAC;gBACJ,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,CAAC,CAAC;YACP,KAAK,CAAC;gBACJ,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;YACR;gBACE,YAAY,GAAG,eAAmD,CAAC;gBACnE,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM;SACT;KACF;SAAM;QACL,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;IAGD,IAAI,KAAK,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;QAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KACvC;IAED,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,GAA6B;QAC7E,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;KAChB,CAAC;IASF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,aAAa,GAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;KAC3C,CAAC;IACF,MAAM,aAAa,GAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAS,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,iBAAiB,GAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAGhD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;QAE/C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,MAAM,EACP,CAAC,EAGD,KAAK,CACN,CAAC;KAEH;IAGD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE;QAErD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,EACD,MAAM,EAGN,KAAK,CACN,CAAC;KAEH;IAED,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE;QAEnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,MAAM,EACN,EAAE,EAGF,KAAK,CACN,CAAC;KAEH;IAED,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE;QAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,EAAE,EACF,EAAE,GAAG,MAAM,EAGX,KAAK,CACN,CAAC;KAEH;IACD,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi, abs } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\ntype IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[],\n edgeCb?: IEdgeCb[]\n) {\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n rectCornerRadius = abs(rectCornerRadius);\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n let cr0;\n let cr1;\n let cr2;\n let cr3;\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cr0 = abs(cornerRadiusArr[0]);\n cornerRadius = [cr0, cr0, cr0, cr0];\n break;\n case 2:\n case 3:\n cr0 = abs(cornerRadiusArr[0]);\n cr1 = abs(cornerRadiusArr[1]);\n cornerRadius = [cr0, cr1, cr0, cr1];\n break;\n default:\n cornerRadius = cornerRadiusArr as [number, number, number, number];\n cornerRadius[0] = abs(cornerRadius[0]);\n cornerRadius[1] = abs(cornerRadius[1]);\n cornerRadius[2] = abs(cornerRadius[2]);\n cornerRadius[3] = abs(cornerRadius[3]);\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n // arc from rightTopPoint1 to rightTopPoint2\n edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1])\n : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n // arc from rightBottomPoint2 to rightTopPoint1\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n // arc from leftBottomPoint1 to leftBottomPoint2\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n edgeCb && edgeCb[3]\n ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1])\n : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n !edgeCb && path.closePath();\n return path;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi, abs } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\ntype IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[],\n // @since 0.22.0\n roundCorner: boolean = true,\n edgeCb?: IEdgeCb[]\n) {\n // TODO 避免breakChange,旧版本的roundCorner位置是edgeCb\n if (Array.isArray(roundCorner)) {\n edgeCb = roundCorner;\n roundCorner = true;\n }\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n rectCornerRadius = abs(rectCornerRadius);\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n let cr0;\n let cr1;\n let cr2;\n let cr3;\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cr0 = abs(cornerRadiusArr[0]);\n cornerRadius = [cr0, cr0, cr0, cr0];\n break;\n case 2:\n case 3:\n cr0 = abs(cornerRadiusArr[0]);\n cr1 = abs(cornerRadiusArr[1]);\n cornerRadius = [cr0, cr1, cr0, cr1];\n break;\n default:\n cornerRadius = cornerRadiusArr as [number, number, number, number];\n cornerRadius[0] = abs(cornerRadius[0]);\n cornerRadius[1] = abs(cornerRadius[1]);\n cornerRadius[2] = abs(cornerRadius[2]);\n cornerRadius[3] = abs(cornerRadius[3]);\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n\n if (!roundCorner) {\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint1[0], rightTopPoint1[1], rightBottomPoint1[0], rightBottomPoint1[1])\n : path.lineTo(rightBottomPoint1[0], rightBottomPoint1[1]);\n // 下边\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n\n // 左边\n edgeCb && edgeCb[2]\n ? edgeCb[2](leftBottomPoint1[0], leftBottomPoint1[1], leftTopPoint1[0], leftTopPoint1[1])\n : path.lineTo(leftTopPoint1[0], leftTopPoint1[1]);\n } else {\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n // arc from rightTopPoint1 to rightTopPoint2\n edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1])\n : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n // arc from rightBottomPoint2 to rightTopPoint1\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n // arc from leftBottomPoint1 to leftBottomPoint2\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n edgeCb && edgeCb[3]\n ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1])\n : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n }\n !edgeCb && path.closePath();\n return path;\n}\n"]}
|
package/es/common/store.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
class StageStore {}
|
|
2
|
-
//# sourceMappingURL=store.js.map
|
|
2
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -59,4 +59,6 @@ export declare abstract class BaseEnvContribution implements IEnvContribution {
|
|
|
59
59
|
loadFont(font: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): Promise<{
|
|
60
60
|
loadState: 'success' | 'fail';
|
|
61
61
|
}>;
|
|
62
|
+
isMacOS(): boolean;
|
|
63
|
+
copyToClipBoard(text: string): Promise<any>;
|
|
62
64
|
}
|
|
@@ -107,6 +107,12 @@ let BaseEnvContribution = class {
|
|
|
107
107
|
};
|
|
108
108
|
}));
|
|
109
109
|
}
|
|
110
|
+
isMacOS() {
|
|
111
|
+
return !1;
|
|
112
|
+
}
|
|
113
|
+
copyToClipBoard(text) {
|
|
114
|
+
return Promise.resolve(null);
|
|
115
|
+
}
|
|
110
116
|
};
|
|
111
117
|
|
|
112
118
|
BaseEnvContribution = __decorate([ injectable() ], BaseEnvContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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","file":"base-contribution.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n CreateDOMParamsType\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n getNativeAABBBounds(dom: any): IBoundsLike {\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n return false;\n }\n\n createDom(params: CreateDOMParamsType): any {\n return null;\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n return false;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 999;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n getElementTop(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementLeft(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementTopLeft(dom: any, baseWindow?: boolean): { top: number; left: number } {\n return { top: 0, left: 0 };\n }\n\n async loadFont(\n font: string,\n source: string | BinaryData,\n descriptors?: FontFaceDescriptors\n ): Promise<{ loadState: 'success' | 'fail' }> {\n return { loadState: 'fail' };\n }\n\n isMacOS() {\n return false;\n }\n copyToClipBoard(text: string) {\n return Promise.resolve(null);\n }\n}\n"]}
|
package/es/core/global.d.ts
CHANGED
|
@@ -6,8 +6,11 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
6
6
|
private _env;
|
|
7
7
|
private _isSafari?;
|
|
8
8
|
private _isChrome?;
|
|
9
|
+
private _isImageAnonymous?;
|
|
9
10
|
get env(): EnvType;
|
|
10
11
|
private envContribution;
|
|
12
|
+
get isImageAnonymous(): boolean;
|
|
13
|
+
set isImageAnonymous(isImageAnonymous: boolean);
|
|
11
14
|
get devicePixelRatio(): number;
|
|
12
15
|
get supportEvent(): boolean;
|
|
13
16
|
set supportEvent(support: boolean);
|
|
@@ -80,4 +83,6 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
80
83
|
top: number;
|
|
81
84
|
left: number;
|
|
82
85
|
};
|
|
86
|
+
isMacOS(): boolean;
|
|
87
|
+
copyToClipBoard(text: string): Promise<void>;
|
|
83
88
|
}
|
package/es/core/global.js
CHANGED
|
@@ -50,6 +50,12 @@ let DefaultGlobal = class {
|
|
|
50
50
|
get env() {
|
|
51
51
|
return this._env;
|
|
52
52
|
}
|
|
53
|
+
get isImageAnonymous() {
|
|
54
|
+
return this._isImageAnonymous;
|
|
55
|
+
}
|
|
56
|
+
set isImageAnonymous(isImageAnonymous) {
|
|
57
|
+
this._isImageAnonymous = isImageAnonymous;
|
|
58
|
+
}
|
|
53
59
|
get devicePixelRatio() {
|
|
54
60
|
return this._env || this.setEnv("browser"), this.envContribution.getDevicePixelRatio();
|
|
55
61
|
}
|
|
@@ -84,7 +90,8 @@ let DefaultGlobal = class {
|
|
|
84
90
|
this._env || this.setEnv("browser"), this.envContribution.applyStyles = support;
|
|
85
91
|
}
|
|
86
92
|
constructor(contributions) {
|
|
87
|
-
this.contributions = contributions, this.id = Generator.GenAutoIncrementId(),
|
|
93
|
+
this.contributions = contributions, this._isImageAnonymous = !0, this.id = Generator.GenAutoIncrementId(),
|
|
94
|
+
this.hooks = {
|
|
88
95
|
onSetEnv: new SyncHook([ "lastEnv", "env", "global" ])
|
|
89
96
|
}, this.measureTextMethod = "native", this.optimizeVisible = !1;
|
|
90
97
|
}
|
|
@@ -205,6 +212,12 @@ let DefaultGlobal = class {
|
|
|
205
212
|
getElementTopLeft(dom, baseWindow = !1) {
|
|
206
213
|
return this._env || this.setEnv("browser"), this.envContribution.getElementTopLeft(dom, baseWindow);
|
|
207
214
|
}
|
|
215
|
+
isMacOS() {
|
|
216
|
+
return this._env || this.setEnv("browser"), this.envContribution.isMacOS();
|
|
217
|
+
}
|
|
218
|
+
copyToClipBoard(text) {
|
|
219
|
+
return this._env || this.setEnv("browser"), this.envContribution.copyToClipBoard(text);
|
|
220
|
+
}
|
|
208
221
|
};
|
|
209
222
|
|
|
210
223
|
DefaultGlobal = __decorate([ injectable(), __param(0, inject(ContributionProvider)), __param(0, named(EnvContribution)), __metadata("design:paramtypes", [ Object ]) ], DefaultGlobal);
|