@visactor/vrender 0.9.0 → 0.9.1-circular.0
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/allocator/allocator-modules.d.ts +1 -3
- package/cjs/allocator/allocator-modules.js +1 -22
- package/cjs/allocator/allocator-modules.js.map +1 -1
- package/cjs/allocator/canvas-allocate.d.ts +2 -5
- package/cjs/allocator/canvas-allocate.js +11 -27
- package/cjs/allocator/canvas-allocate.js.map +1 -1
- package/cjs/allocator/constants.d.ts +0 -2
- package/cjs/allocator/constants.js +3 -5
- package/cjs/allocator/constants.js.map +1 -1
- package/cjs/allocator/graphic-allocate.d.ts +1 -58
- package/cjs/allocator/graphic-allocate.js +1 -160
- package/cjs/allocator/graphic-allocate.js.map +1 -1
- package/cjs/allocator/interface.d.ts +10 -0
- package/cjs/allocator/interface.js.map +1 -1
- package/cjs/allocator/matrix-allocate.d.ts +2 -0
- package/cjs/allocator/matrix-allocate.js +9 -16
- package/cjs/allocator/matrix-allocate.js.map +1 -1
- package/cjs/animate/Ticker/default-ticker.js +5 -5
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.d.ts +1 -1
- package/cjs/animate/animate.js +15 -15
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/custom-animate.d.ts +3 -3
- package/cjs/animate/custom-animate.js +23 -25
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/default-ticker.d.ts +2 -0
- package/cjs/animate/default-ticker.js +14 -0
- package/cjs/animate/default-ticker.js.map +1 -0
- package/cjs/animate/morphing.d.ts +1 -1
- package/cjs/animate/morphing.js +15 -17
- package/cjs/animate/morphing.js.map +1 -1
- package/cjs/animate/timeline.js +6 -5
- package/cjs/animate/timeline.js.map +1 -1
- package/cjs/application.d.ts +11 -0
- package/cjs/application.js +9 -0
- package/cjs/application.js.map +1 -0
- package/cjs/canvas/contributions/browser/canvas.js +2 -2
- package/cjs/canvas/contributions/browser/canvas.js.map +1 -1
- package/cjs/canvas/contributions/browser/conical-gradient.js +2 -2
- package/cjs/canvas/contributions/browser/conical-gradient.js.map +1 -1
- package/cjs/canvas/contributions/browser/context.d.ts +2 -4
- package/cjs/canvas/contributions/browser/context.js +13 -13
- package/cjs/canvas/contributions/browser/context.js.map +1 -1
- package/cjs/canvas/contributions/taro/context.js +8 -8
- package/cjs/canvas/contributions/taro/context.js.map +1 -1
- package/cjs/canvas/empty-context.d.ts +1 -1
- package/cjs/canvas/empty-context.js +7 -7
- package/cjs/canvas/empty-context.js.map +1 -1
- package/cjs/canvas/index.d.ts +0 -3
- package/cjs/canvas/index.js +2 -14
- package/cjs/canvas/index.js.map +1 -1
- package/cjs/canvas/util.d.ts +3 -0
- package/cjs/canvas/util.js +22 -10
- package/cjs/canvas/util.js.map +1 -1
- package/cjs/color-string/colorName.js +1 -1
- package/cjs/color-string/index.js +1 -1
- package/cjs/color-string/interpolate.js +1 -1
- package/cjs/common/{bezier.d.ts → bezier-utils.d.ts} +0 -3
- package/cjs/common/bezier-utils.js +35 -0
- package/cjs/common/bezier-utils.js.map +1 -0
- package/cjs/common/canvas-utils.d.ts +1 -1
- package/cjs/common/canvas-utils.js +11 -7
- package/cjs/common/canvas-utils.js.map +1 -1
- package/cjs/common/custom-path2d.d.ts +47 -0
- package/cjs/common/{path.js → custom-path2d.js} +11 -230
- package/cjs/common/custom-path2d.js.map +1 -0
- package/cjs/common/enums.d.ts +12 -0
- package/cjs/common/enums.js +10 -3
- package/cjs/common/enums.js.map +1 -1
- package/cjs/common/generator.js +1 -2
- package/cjs/common/morphing-utils.d.ts +1 -2
- package/cjs/common/morphing-utils.js +8 -11
- package/cjs/common/morphing-utils.js.map +1 -1
- package/cjs/common/polygon.js +1 -0
- package/cjs/common/render-area.d.ts +2 -3
- package/cjs/common/render-area.js +8 -8
- package/cjs/common/render-area.js.map +1 -1
- package/cjs/common/render-curve.d.ts +1 -2
- package/cjs/common/render-curve.js +3 -3
- package/cjs/common/render-curve.js.map +1 -1
- package/cjs/common/seg-context.d.ts +7 -13
- package/cjs/common/seg-context.js +7 -13
- package/cjs/common/seg-context.js.map +1 -1
- package/cjs/common/{curve → segment}/basis.d.ts +12 -5
- package/cjs/common/{curve → segment}/basis.js +4 -4
- package/cjs/common/segment/basis.js.map +1 -0
- package/cjs/common/segment/common.d.ts +3 -0
- package/cjs/common/segment/common.js.map +1 -0
- package/cjs/common/segment/curve/arc.d.ts +14 -0
- package/cjs/common/segment/curve/arc.js +29 -0
- package/cjs/common/segment/curve/arc.js.map +1 -0
- package/cjs/common/segment/curve/base.d.ts +13 -0
- package/cjs/common/segment/curve/base.js +15 -0
- package/cjs/common/segment/curve/base.js.map +1 -0
- package/cjs/common/segment/curve/cubic-bezier.d.ts +17 -0
- package/cjs/common/segment/curve/cubic-bezier.js +42 -0
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -0
- package/cjs/common/segment/curve/curve-context.d.ts +19 -0
- package/cjs/common/segment/curve/curve-context.js +48 -0
- package/cjs/common/segment/curve/curve-context.js.map +1 -0
- package/cjs/common/segment/curve/ellipse.d.ts +18 -0
- package/cjs/common/segment/curve/ellipse.js +30 -0
- package/cjs/common/segment/curve/ellipse.js.map +1 -0
- package/cjs/common/segment/curve/line.d.ts +16 -0
- package/cjs/common/segment/curve/line.js +41 -0
- package/cjs/common/segment/curve/line.js.map +1 -0
- package/cjs/common/segment/curve/move.d.ts +13 -0
- package/cjs/common/segment/curve/move.js +28 -0
- package/cjs/common/segment/curve/move.js.map +1 -0
- package/cjs/common/segment/curve/path.d.ts +11 -0
- package/cjs/common/segment/curve/path.js +31 -0
- package/cjs/common/segment/curve/path.js.map +1 -0
- package/cjs/common/segment/curve/quadratic-bezier.d.ts +14 -0
- package/cjs/common/segment/curve/quadratic-bezier.js +29 -0
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -0
- package/{es/common/curve → cjs/common/segment}/index.d.ts +2 -4
- package/cjs/common/{curve → segment}/index.js +1 -2
- package/cjs/common/segment/index.js.map +1 -0
- package/cjs/common/segment/linear-closed.d.ts +24 -0
- package/cjs/common/{curve → segment}/linear-closed.js +4 -4
- package/cjs/common/segment/linear-closed.js.map +1 -0
- package/cjs/common/segment/linear.d.ts +24 -0
- package/cjs/common/{curve → segment}/linear.js +4 -4
- package/cjs/common/segment/linear.js.map +1 -0
- package/{es/common/curve → cjs/common/segment}/monotone.d.ts +12 -5
- package/cjs/common/{curve → segment}/monotone.js +5 -5
- package/cjs/common/segment/monotone.js.map +1 -0
- package/cjs/common/segment/step.d.ts +25 -0
- package/cjs/common/{curve → segment}/step.js +4 -4
- package/cjs/common/segment/step.js.map +1 -0
- package/cjs/common/shape/arc.d.ts +3 -0
- package/cjs/common/shape/arc.js +17 -2
- package/cjs/common/shape/arc.js.map +1 -1
- package/cjs/common/shape/rect.d.ts +1 -1
- package/cjs/common/sort.js +1 -1
- package/cjs/common/split-path.js +1 -1
- package/cjs/common/split-path.js.map +1 -1
- package/cjs/common/store.js +1 -1
- package/cjs/common/text.js +1 -1
- package/cjs/common/utils.d.ts +2 -1
- package/cjs/common/utils.js +16 -7
- package/cjs/common/utils.js.map +1 -1
- package/cjs/container.js +2 -1
- package/cjs/container.js.map +1 -1
- package/cjs/core/application.js +1 -1
- package/cjs/core/camera.js +8 -8
- package/cjs/core/camera.js.map +1 -1
- package/cjs/core/constants.d.ts +1 -5
- package/cjs/core/constants.js +3 -20
- package/cjs/core/constants.js.map +1 -1
- package/cjs/core/contributions/env/browser-contribution.js +2 -2
- package/cjs/core/contributions/env/browser-contribution.js.map +1 -1
- package/cjs/core/contributions/env/modules.js +2 -2
- package/cjs/core/contributions/env/modules.js.map +1 -1
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +2 -2
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/modules.js +2 -2
- package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +2 -2
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +1 -1
- package/cjs/core/contributions/textMeasure/AtextMeasure.js +4 -4
- package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/cjs/core/contributions/textMeasure/ITextMeasure.d.ts +1 -1
- package/cjs/core/contributions/textMeasure/ITextMeasure.js.map +1 -1
- package/cjs/core/contributions/textMeasure/modules.js +2 -2
- package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
- package/cjs/core/contributions/window/base-contribution.js +2 -2
- package/cjs/core/contributions/window/base-contribution.js.map +1 -1
- package/cjs/core/contributions/window/browser-contribution.js +2 -2
- package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
- package/cjs/core/contributions/window/feishu-contribution.js +2 -2
- package/cjs/core/contributions/window/feishu-contribution.js.map +1 -1
- package/cjs/core/contributions/window/lynx-contribution.js +2 -2
- package/cjs/core/contributions/window/lynx-contribution.js.map +1 -1
- package/cjs/core/contributions/window/modules.js +5 -5
- package/cjs/core/contributions/window/modules.js.map +1 -1
- package/cjs/core/contributions/window/node-contribution.js.map +1 -1
- package/cjs/core/contributions/window/taro-contribution.js +2 -2
- package/cjs/core/contributions/window/taro-contribution.js.map +1 -1
- package/cjs/core/core-modules.js +5 -5
- package/cjs/core/core-modules.js.map +1 -1
- package/cjs/core/global-module.d.ts +5 -0
- package/cjs/core/global-module.js +19 -0
- package/cjs/core/global-module.js.map +1 -0
- package/cjs/core/global.d.ts +3 -3
- package/cjs/core/global.js +3 -3
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/graphic-utils.d.ts +3 -25
- package/cjs/core/graphic-utils.js +10 -11
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/index.d.ts +2 -0
- package/cjs/core/index.js +3 -2
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +30 -0
- package/cjs/core/interface.js +6 -0
- package/cjs/core/interface.js.map +1 -0
- package/cjs/core/layer-service.d.ts +1 -8
- package/cjs/core/layer-service.js +2 -4
- package/cjs/core/layer-service.js.map +1 -1
- package/cjs/core/layer.d.ts +1 -1
- package/cjs/core/layer.js +8 -7
- package/cjs/core/layer.js.map +1 -1
- package/cjs/core/light.js +1 -1
- package/cjs/core/stage.js +8 -8
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.js +4 -4
- package/cjs/core/window.js.map +1 -1
- package/cjs/create.d.ts +1 -1
- package/cjs/create.js +4 -3
- package/cjs/create.js.map +1 -1
- package/cjs/event/constant.js +1 -1
- package/cjs/event/event-manager.js +1 -1
- package/cjs/event/event-system.js +1 -1
- package/cjs/event/event-target.js +1 -1
- package/cjs/event/extension/gesture.js +2 -2
- package/cjs/event/extension/gesture.js.map +1 -1
- package/cjs/event/index.js +1 -1
- package/cjs/event/interface.js +1 -1
- package/cjs/event/type.js +2 -1
- package/cjs/event/util.js +1 -1
- package/cjs/graphic/arc.d.ts +1 -2
- package/cjs/graphic/arc.js +7 -11
- package/cjs/graphic/arc.js.map +1 -1
- package/cjs/graphic/arc3d.d.ts +0 -1
- package/cjs/graphic/arc3d.js +6 -8
- package/cjs/graphic/arc3d.js.map +1 -1
- package/cjs/graphic/area.d.ts +1 -2
- package/cjs/graphic/area.js +8 -12
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/bounds.js +1 -1
- package/cjs/graphic/builtin-symbol/utils.js +3 -3
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/circle.d.ts +1 -2
- package/cjs/graphic/circle.js +7 -11
- package/cjs/graphic/circle.js.map +1 -1
- package/cjs/graphic/config.js +5 -7
- package/cjs/graphic/config.js.map +1 -1
- package/{es/graphic/constant.d.ts → cjs/graphic/constants.d.ts} +2 -1
- package/cjs/graphic/constants.js +21 -0
- package/cjs/graphic/constants.js.map +1 -0
- package/cjs/graphic/glyph.d.ts +0 -1
- package/cjs/graphic/glyph.js +4 -6
- package/cjs/graphic/glyph.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-module.js +8 -7
- package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-service.d.ts +4 -60
- package/cjs/graphic/graphic-service/graphic-service.js +48 -48
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +0 -1
- package/cjs/graphic/graphic.js +14 -23
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.d.ts +0 -1
- package/cjs/graphic/group.js +16 -15
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/image.d.ts +0 -1
- package/cjs/graphic/image.js +5 -9
- package/cjs/graphic/image.js.map +1 -1
- package/cjs/graphic/index.d.ts +1 -0
- package/cjs/graphic/index.js +2 -1
- package/cjs/graphic/index.js.map +1 -1
- package/cjs/graphic/line.d.ts +1 -2
- package/cjs/graphic/line.js +7 -11
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/node-tree.js +2 -2
- package/cjs/graphic/node-tree.js.map +1 -1
- package/cjs/graphic/path.d.ts +1 -2
- package/cjs/graphic/path.js +9 -13
- package/cjs/graphic/path.js.map +1 -1
- package/cjs/graphic/polygon.d.ts +1 -2
- package/cjs/graphic/polygon.js +5 -9
- package/cjs/graphic/polygon.js.map +1 -1
- package/cjs/graphic/pyramid3d.d.ts +0 -1
- package/cjs/graphic/pyramid3d.js +5 -7
- package/cjs/graphic/pyramid3d.js.map +1 -1
- package/cjs/graphic/rect.d.ts +1 -2
- package/cjs/graphic/rect.js +6 -10
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/rect3d.d.ts +0 -1
- package/cjs/graphic/rect3d.js +3 -7
- package/cjs/graphic/rect3d.js.map +1 -1
- package/cjs/graphic/richtext/icon.js +3 -3
- package/cjs/graphic/richtext/icon.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.d.ts +1 -0
- package/cjs/graphic/richtext/paragraph.js +7 -2
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.d.ts +0 -2
- package/cjs/graphic/richtext/utils.js +12 -25
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.js +2 -2
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +0 -1
- package/cjs/graphic/richtext.js +5 -9
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/symbol.d.ts +1 -2
- package/cjs/graphic/symbol.js +7 -11
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.d.ts +0 -1
- package/cjs/graphic/text.js +12 -15
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/tools.d.ts +1 -0
- package/cjs/graphic/tools.js +11 -3
- package/cjs/graphic/tools.js.map +1 -1
- package/cjs/graphic/wrap-text.js +2 -2
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/index.d.ts +21 -3
- package/cjs/index.js +14 -12
- package/cjs/index.js.map +1 -1
- package/cjs/interface/common.d.ts +1 -0
- package/cjs/interface/common.js.map +1 -1
- package/cjs/interface/context.d.ts +3 -3
- package/cjs/interface/context.js.map +1 -1
- package/{es/common/curve/interface.d.ts → cjs/interface/curve.d.ts} +19 -19
- package/cjs/interface/curve.js +6 -0
- package/cjs/interface/curve.js.map +1 -0
- package/cjs/interface/graphic/area.d.ts +2 -2
- package/cjs/interface/graphic/area.js.map +1 -1
- package/cjs/interface/graphic/creator.js.map +1 -1
- package/cjs/interface/graphic/line.d.ts +2 -2
- package/cjs/interface/graphic/line.js.map +1 -1
- package/cjs/interface/graphic/path.d.ts +1 -2
- package/cjs/interface/graphic/path.js.map +1 -1
- package/cjs/interface/graphic/richText.d.ts +2 -4
- package/cjs/interface/graphic/richText.js.map +1 -1
- package/cjs/interface/graphic-service.d.ts +58 -0
- package/cjs/interface/graphic-service.js +6 -0
- package/cjs/interface/graphic-service.js.map +1 -0
- package/cjs/interface/graphic.d.ts +4 -4
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/index.d.ts +2 -0
- package/cjs/interface/index.js +2 -1
- package/cjs/interface/index.js.map +1 -1
- package/cjs/interface/path.d.ts +11 -19
- package/cjs/interface/path.js +1 -8
- package/cjs/interface/path.js.map +1 -1
- package/cjs/kits/env.js +3 -3
- package/cjs/kits/env.js.map +1 -1
- package/cjs/modules.d.ts +2 -19
- package/cjs/modules.js +12 -17
- package/cjs/modules.js.map +1 -1
- package/cjs/picker/canvas-picker-service.d.ts +1 -1
- package/cjs/picker/canvas-picker-service.js +10 -9
- package/cjs/picker/canvas-picker-service.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/arc-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/arc3d-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/area-picker.js +3 -3
- package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/circle-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js +2 -2
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/image-picker.js +2 -2
- package/cjs/picker/contributions/canvas-picker/image-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/line-picker.js +5 -5
- package/cjs/picker/contributions/canvas-picker/line-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/module.js +2 -2
- package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/path-picker.js +5 -5
- package/cjs/picker/contributions/canvas-picker/path-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js +3 -3
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/rect-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/rect3d-picker.js +4 -4
- package/cjs/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/richtext-picker.js +2 -2
- package/cjs/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js +5 -5
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/text-picker.js +5 -5
- package/cjs/picker/contributions/canvas-picker/text-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/arc-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/arc-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/area-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/area-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/circle-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/circle-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/glyph-picker.js +2 -2
- package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/line-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/line-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/module.js +2 -2
- package/cjs/picker/contributions/math-picker/module.js.map +1 -1
- package/cjs/picker/contributions/math-picker/path-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/path-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/polygon-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/polygon-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/rect-picker.js +4 -4
- package/cjs/picker/contributions/math-picker/rect-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/symbol-picker.js +3 -3
- package/cjs/picker/contributions/math-picker/symbol-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/text-picker.js +2 -2
- package/cjs/picker/contributions/math-picker/text-picker.js.map +1 -1
- package/cjs/picker/contributions/modules.js.map +1 -1
- package/cjs/picker/math-picker-service.d.ts +1 -1
- package/cjs/picker/math-picker-service.js +4 -3
- package/cjs/picker/math-picker-service.js.map +1 -1
- package/cjs/picker/pick-interceptor.js +2 -2
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/pick-modules.js +2 -2
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +1 -1
- package/cjs/picker/picker-service.js +10 -10
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +2 -2
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js +6 -6
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +7 -7
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/cjs/render/contributions/render/arc-render.d.ts +1 -2
- package/cjs/render/contributions/render/arc-render.js +22 -117
- package/cjs/render/contributions/render/arc-render.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js +10 -10
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.d.ts +2 -2
- package/cjs/render/contributions/render/area-render.js +18 -17
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.js +3 -3
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/circle-render.d.ts +1 -1
- package/cjs/render/contributions/render/circle-render.js +6 -5
- package/cjs/render/contributions/render/circle-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js +5 -5
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/area-contribution-render.js +6 -2
- package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +3 -3
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -3
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +7 -7
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.d.ts +2 -2
- package/cjs/render/contributions/render/draw-contribution.js +6 -6
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.js +5 -5
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/glyph-render.js +3 -3
- package/cjs/render/contributions/render/glyph-render.js.map +1 -1
- package/cjs/render/contributions/render/group-render.d.ts +1 -1
- package/cjs/render/contributions/render/group-render.js +9 -8
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.d.ts +1 -1
- package/cjs/render/contributions/render/image-render.js +6 -5
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-area-render.js +4 -4
- package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.d.ts +2 -2
- package/cjs/render/contributions/render/incremental-draw-contribution.js +4 -4
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/incremental-line-render.js +4 -4
- package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
- package/cjs/render/contributions/render/index.d.ts +1 -0
- package/cjs/render/contributions/render/index.js +1 -1
- package/cjs/render/contributions/render/index.js.map +1 -1
- package/cjs/render/contributions/render/line-render.d.ts +1 -2
- package/cjs/render/contributions/render/line-render.js +11 -11
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/module.js +12 -12
- package/cjs/render/contributions/render/module.js.map +1 -1
- package/cjs/render/contributions/render/path-render.d.ts +1 -1
- package/cjs/render/contributions/render/path-render.js +9 -8
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.d.ts +1 -1
- package/cjs/render/contributions/render/polygon-render.js +6 -5
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/pyramid3d-render.js +7 -7
- package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.d.ts +1 -1
- package/cjs/render/contributions/render/rect-render.js +7 -6
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/rect3d-render.js +7 -7
- package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +6 -6
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.d.ts +1 -1
- package/cjs/render/contributions/render/symbol-render.js +7 -6
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/text-render.js +10 -10
- package/cjs/render/contributions/render/text-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +13 -3
- package/cjs/render/contributions/render/utils.js +105 -7
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/resource-loader/loader.d.ts +1 -1
- package/cjs/resource-loader/loader.js +8 -8
- package/cjs/resource-loader/loader.js.map +1 -1
- package/cjs/{common → tapable}/interface.js +2 -0
- package/cjs/tapable/interface.js.map +1 -0
- package/dist/vrender.js.js +1 -1
- package/dist/vrender.js.min.js +1 -1
- package/es/allocator/allocator-modules.d.ts +1 -3
- package/es/allocator/allocator-modules.js +1 -22
- package/es/allocator/allocator-modules.js.map +1 -1
- package/es/allocator/canvas-allocate.d.ts +2 -5
- package/es/allocator/canvas-allocate.js +9 -27
- package/es/allocator/canvas-allocate.js.map +1 -1
- package/es/allocator/constants.d.ts +0 -2
- package/es/allocator/constants.js +1 -6
- package/es/allocator/constants.js.map +1 -1
- package/es/allocator/graphic-allocate.d.ts +1 -58
- package/es/allocator/graphic-allocate.js +1 -181
- package/es/allocator/graphic-allocate.js.map +1 -1
- package/es/allocator/interface.d.ts +10 -0
- package/es/allocator/interface.js.map +1 -1
- package/es/allocator/matrix-allocate.d.ts +2 -0
- package/es/allocator/matrix-allocate.js +7 -19
- package/es/allocator/matrix-allocate.js.map +1 -1
- package/es/animate/Ticker/default-ticker.js +5 -5
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.d.ts +1 -1
- package/es/animate/animate.js +3 -1
- package/es/animate/animate.js.map +1 -1
- package/es/animate/custom-animate.d.ts +3 -3
- package/es/animate/custom-animate.js +20 -20
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/default-ticker.d.ts +2 -0
- package/es/animate/default-ticker.js +12 -0
- package/es/animate/default-ticker.js.map +1 -0
- package/es/animate/morphing.d.ts +1 -1
- package/es/animate/morphing.js +15 -16
- package/es/animate/morphing.js.map +1 -1
- package/es/animate/timeline.js +5 -2
- package/es/animate/timeline.js.map +1 -1
- package/es/application.d.ts +11 -0
- package/es/application.js +3 -0
- package/es/application.js.map +1 -0
- package/es/canvas/contributions/browser/canvas.js +2 -2
- package/es/canvas/contributions/browser/canvas.js.map +1 -1
- package/es/canvas/contributions/browser/conical-gradient.js +4 -4
- package/es/canvas/contributions/browser/conical-gradient.js.map +1 -1
- package/es/canvas/contributions/browser/context.d.ts +2 -4
- package/es/canvas/contributions/browser/context.js +12 -11
- package/es/canvas/contributions/browser/context.js.map +1 -1
- package/es/canvas/contributions/taro/context.js +8 -7
- package/es/canvas/contributions/taro/context.js.map +1 -1
- package/es/canvas/empty-context.d.ts +1 -1
- package/es/canvas/empty-context.js +5 -3
- package/es/canvas/empty-context.js.map +1 -1
- package/es/canvas/index.d.ts +0 -3
- package/es/canvas/index.js +0 -12
- package/es/canvas/index.js.map +1 -1
- package/es/canvas/util.d.ts +3 -0
- package/es/canvas/util.js +15 -1
- package/es/canvas/util.js.map +1 -1
- package/es/color-string/colorName.js +1 -1
- package/es/color-string/index.js +1 -1
- package/es/color-string/interpolate.js +1 -1
- package/es/common/{bezier.d.ts → bezier-utils.d.ts} +0 -3
- package/es/common/{bezier.js → bezier-utils.js} +1 -13
- package/es/common/bezier-utils.js.map +1 -0
- package/es/common/canvas-utils.d.ts +1 -1
- package/es/common/canvas-utils.js +6 -3
- package/es/common/canvas-utils.js.map +1 -1
- package/es/common/custom-path2d.d.ts +47 -0
- package/es/common/{path.js → custom-path2d.js} +7 -207
- package/es/common/custom-path2d.js.map +1 -0
- package/es/common/enums.d.ts +12 -0
- package/es/common/enums.js +14 -0
- package/es/common/enums.js.map +1 -1
- package/es/common/generator.js +1 -2
- package/es/common/morphing-utils.d.ts +1 -2
- package/es/common/morphing-utils.js +3 -6
- package/es/common/morphing-utils.js.map +1 -1
- package/es/common/polygon.js +2 -1
- package/es/common/render-area.d.ts +2 -3
- package/es/common/render-area.js +5 -1
- package/es/common/render-area.js.map +1 -1
- package/es/common/render-curve.d.ts +1 -2
- package/es/common/render-curve.js +2 -2
- package/es/common/render-curve.js.map +1 -1
- package/es/common/seg-context.d.ts +7 -13
- package/es/common/seg-context.js +4 -6
- package/es/common/seg-context.js.map +1 -1
- package/es/common/{curve → segment}/basis.d.ts +12 -5
- package/es/common/{curve → segment}/basis.js +4 -4
- package/es/common/segment/basis.js.map +1 -0
- package/es/common/segment/common.d.ts +3 -0
- package/es/common/segment/common.js.map +1 -0
- package/es/common/segment/curve/arc.d.ts +14 -0
- package/es/common/segment/curve/arc.js +22 -0
- package/es/common/segment/curve/arc.js.map +1 -0
- package/es/common/segment/curve/base.d.ts +13 -0
- package/es/common/segment/curve/base.js +7 -0
- package/es/common/segment/curve/base.js.map +1 -0
- package/es/common/segment/curve/cubic-bezier.d.ts +17 -0
- package/es/common/segment/curve/cubic-bezier.js +37 -0
- package/es/common/segment/curve/cubic-bezier.js.map +1 -0
- package/es/common/segment/curve/curve-context.d.ts +19 -0
- package/es/common/segment/curve/curve-context.js +44 -0
- package/es/common/segment/curve/curve-context.js.map +1 -0
- package/es/common/segment/curve/ellipse.d.ts +18 -0
- package/es/common/segment/curve/ellipse.js +24 -0
- package/es/common/segment/curve/ellipse.js.map +1 -0
- package/es/common/segment/curve/line.d.ts +16 -0
- package/es/common/segment/curve/line.js +34 -0
- package/es/common/segment/curve/line.js.map +1 -0
- package/es/common/segment/curve/move.d.ts +13 -0
- package/es/common/segment/curve/move.js +22 -0
- package/es/common/segment/curve/move.js.map +1 -0
- package/es/common/segment/curve/path.d.ts +11 -0
- package/es/common/segment/curve/path.js +23 -0
- package/es/common/segment/curve/path.js.map +1 -0
- package/es/common/segment/curve/quadratic-bezier.d.ts +14 -0
- package/es/common/segment/curve/quadratic-bezier.js +23 -0
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -0
- package/{cjs/common/curve → es/common/segment}/index.d.ts +2 -4
- package/es/common/{curve → segment}/index.js +0 -2
- package/es/common/segment/index.js.map +1 -0
- package/es/common/segment/linear-closed.d.ts +24 -0
- package/es/common/{curve → segment}/linear-closed.js +4 -4
- package/es/common/segment/linear-closed.js.map +1 -0
- package/es/common/segment/linear.d.ts +24 -0
- package/es/common/{curve → segment}/linear.js +4 -4
- package/es/common/segment/linear.js.map +1 -0
- package/{cjs/common/curve → es/common/segment}/monotone.d.ts +12 -5
- package/es/common/{curve → segment}/monotone.js +4 -4
- package/es/common/segment/monotone.js.map +1 -0
- package/es/common/segment/step.d.ts +25 -0
- package/es/common/{curve → segment}/step.js +4 -4
- package/es/common/segment/step.js.map +1 -0
- package/es/common/shape/arc.d.ts +3 -0
- package/es/common/shape/arc.js +13 -0
- package/es/common/shape/arc.js.map +1 -1
- package/es/common/shape/rect.d.ts +1 -1
- package/es/common/sort.js +1 -1
- package/es/common/split-path.js +1 -1
- package/es/common/split-path.js.map +1 -1
- package/es/common/store.js +1 -1
- package/es/common/text.js +1 -1
- package/es/common/utils.d.ts +2 -1
- package/es/common/utils.js +15 -6
- package/es/common/utils.js.map +1 -1
- package/es/container.js +2 -1
- package/es/container.js.map +1 -1
- package/es/core/application.js +1 -1
- package/es/core/camera.js +2 -2
- package/es/core/camera.js.map +1 -1
- package/es/core/constants.d.ts +1 -5
- package/es/core/constants.js +2 -10
- package/es/core/constants.js.map +1 -1
- package/es/core/contributions/env/browser-contribution.js +1 -1
- package/es/core/contributions/env/browser-contribution.js.map +1 -1
- package/es/core/contributions/env/modules.js +1 -1
- package/es/core/contributions/env/modules.js.map +1 -1
- package/es/core/contributions/layerHandler/canvas2d-contribution.js +2 -2
- package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/modules.js +1 -1
- package/es/core/contributions/layerHandler/modules.js.map +1 -1
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js +2 -2
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.d.ts +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.js +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/es/core/contributions/textMeasure/ITextMeasure.d.ts +1 -1
- package/es/core/contributions/textMeasure/ITextMeasure.js.map +1 -1
- package/es/core/contributions/textMeasure/modules.js +1 -1
- package/es/core/contributions/textMeasure/modules.js.map +1 -1
- package/es/core/contributions/window/base-contribution.js +1 -1
- package/es/core/contributions/window/base-contribution.js.map +1 -1
- package/es/core/contributions/window/browser-contribution.js +1 -1
- package/es/core/contributions/window/browser-contribution.js.map +1 -1
- package/es/core/contributions/window/feishu-contribution.js +1 -1
- package/es/core/contributions/window/feishu-contribution.js.map +1 -1
- package/es/core/contributions/window/lynx-contribution.js +1 -1
- package/es/core/contributions/window/lynx-contribution.js.map +1 -1
- package/es/core/contributions/window/modules.js +1 -1
- package/es/core/contributions/window/modules.js.map +1 -1
- package/es/core/contributions/window/node-contribution.js.map +1 -1
- package/es/core/contributions/window/taro-contribution.js +1 -1
- package/es/core/contributions/window/taro-contribution.js.map +1 -1
- package/es/core/core-modules.js +5 -3
- package/es/core/core-modules.js.map +1 -1
- package/es/core/global-module.d.ts +5 -0
- package/es/core/global-module.js +19 -0
- package/es/core/global-module.js.map +1 -0
- package/es/core/global.d.ts +3 -3
- package/es/core/global.js +2 -2
- package/es/core/global.js.map +1 -1
- package/es/core/graphic-utils.d.ts +3 -25
- package/es/core/graphic-utils.js +4 -8
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/index.d.ts +2 -0
- package/es/core/index.js +5 -1
- package/es/core/index.js.map +1 -1
- package/es/core/interface.d.ts +30 -0
- package/es/core/interface.js +2 -0
- package/es/core/interface.js.map +1 -0
- package/es/core/layer-service.d.ts +1 -8
- package/es/core/layer-service.js +1 -3
- package/es/core/layer-service.js.map +1 -1
- package/es/core/layer.d.ts +1 -1
- package/es/core/layer.js +9 -5
- package/es/core/layer.js.map +1 -1
- package/es/core/light.js +1 -1
- package/es/core/stage.js +3 -3
- package/es/core/stage.js.map +1 -1
- package/es/core/window.js +3 -3
- package/es/core/window.js.map +1 -1
- package/es/create.d.ts +1 -1
- package/es/create.js +3 -2
- package/es/create.js.map +1 -1
- package/es/event/constant.js +1 -1
- package/es/event/event-manager.js +1 -1
- package/es/event/event-system.js +1 -1
- package/es/event/event-target.js +1 -1
- package/es/event/extension/gesture.js +2 -2
- package/es/event/extension/gesture.js.map +1 -1
- package/es/event/index.js +1 -1
- package/es/event/interface.js +1 -1
- package/es/event/type.js +2 -1
- package/es/event/util.js +1 -1
- package/es/graphic/arc.d.ts +1 -2
- package/es/graphic/arc.js +8 -6
- package/es/graphic/arc.js.map +1 -1
- package/es/graphic/arc3d.d.ts +0 -1
- package/es/graphic/arc3d.js +5 -7
- package/es/graphic/arc3d.js.map +1 -1
- package/es/graphic/area.d.ts +1 -2
- package/es/graphic/area.js +8 -6
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/bounds.js +1 -1
- package/es/graphic/builtin-symbol/utils.js +1 -1
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/circle.d.ts +1 -2
- package/es/graphic/circle.js +8 -6
- package/es/graphic/circle.js.map +1 -1
- package/es/graphic/config.js +4 -6
- package/es/graphic/config.js.map +1 -1
- package/{cjs/graphic/constant.d.ts → es/graphic/constants.d.ts} +2 -1
- package/es/graphic/{constant.js → constants.js} +6 -6
- package/es/graphic/constants.js.map +1 -0
- package/es/graphic/glyph.d.ts +0 -1
- package/es/graphic/glyph.js +4 -4
- package/es/graphic/glyph.js.map +1 -1
- package/es/graphic/graphic-service/graphic-module.js +7 -3
- package/es/graphic/graphic-service/graphic-module.js.map +1 -1
- package/es/graphic/graphic-service/graphic-service.d.ts +4 -60
- package/es/graphic/graphic-service/graphic-service.js +42 -40
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic.d.ts +0 -1
- package/es/graphic/graphic.js +13 -20
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.d.ts +0 -1
- package/es/graphic/group.js +13 -13
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/image.d.ts +0 -1
- package/es/graphic/image.js +5 -5
- package/es/graphic/image.js.map +1 -1
- package/es/graphic/index.d.ts +1 -0
- package/es/graphic/index.js +2 -0
- package/es/graphic/index.js.map +1 -1
- package/es/graphic/line.d.ts +1 -2
- package/es/graphic/line.js +8 -6
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/node-tree.js +1 -1
- package/es/graphic/node-tree.js.map +1 -1
- package/es/graphic/path.d.ts +1 -2
- package/es/graphic/path.js +7 -5
- package/es/graphic/path.js.map +1 -1
- package/es/graphic/polygon.d.ts +1 -2
- package/es/graphic/polygon.js +5 -5
- package/es/graphic/polygon.js.map +1 -1
- package/es/graphic/pyramid3d.d.ts +0 -1
- package/es/graphic/pyramid3d.js +4 -6
- package/es/graphic/pyramid3d.js.map +1 -1
- package/es/graphic/rect.d.ts +1 -2
- package/es/graphic/rect.js +7 -5
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/rect3d.d.ts +0 -1
- package/es/graphic/rect3d.js +1 -3
- package/es/graphic/rect3d.js.map +1 -1
- package/es/graphic/richtext/icon.js +1 -1
- package/es/graphic/richtext/icon.js.map +1 -1
- package/es/graphic/richtext/paragraph.d.ts +1 -0
- package/es/graphic/richtext/paragraph.js +5 -0
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.d.ts +0 -2
- package/es/graphic/richtext/utils.js +9 -18
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.js +3 -1
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.d.ts +0 -1
- package/es/graphic/richtext.js +5 -5
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/symbol.d.ts +1 -2
- package/es/graphic/symbol.js +7 -5
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.d.ts +0 -1
- package/es/graphic/text.js +10 -8
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/tools.d.ts +1 -0
- package/es/graphic/tools.js +8 -2
- package/es/graphic/tools.js.map +1 -1
- package/es/graphic/wrap-text.js +3 -3
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/index.d.ts +21 -3
- package/es/index.js +38 -8
- package/es/index.js.map +1 -1
- package/es/interface/common.d.ts +1 -0
- package/es/interface/common.js.map +1 -1
- package/es/interface/context.d.ts +3 -3
- package/es/interface/context.js.map +1 -1
- package/{cjs/common/curve/interface.d.ts → es/interface/curve.d.ts} +19 -19
- package/es/interface/curve.js +2 -0
- package/es/interface/curve.js.map +1 -0
- package/es/interface/graphic/area.d.ts +2 -2
- package/es/interface/graphic/area.js.map +1 -1
- package/es/interface/graphic/creator.js.map +1 -1
- package/es/interface/graphic/line.d.ts +2 -2
- package/es/interface/graphic/line.js.map +1 -1
- package/es/interface/graphic/path.d.ts +1 -2
- package/es/interface/graphic/path.js.map +1 -1
- package/es/interface/graphic/richText.d.ts +2 -4
- package/es/interface/graphic/richText.js.map +1 -1
- package/es/interface/graphic-service.d.ts +58 -0
- package/es/interface/graphic-service.js +2 -0
- package/es/interface/graphic-service.js.map +1 -0
- package/es/interface/graphic.d.ts +4 -4
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/index.d.ts +2 -0
- package/es/interface/index.js +4 -0
- package/es/interface/index.js.map +1 -1
- package/es/interface/path.d.ts +11 -19
- package/es/interface/path.js +0 -8
- package/es/interface/path.js.map +1 -1
- package/es/kits/env.js +1 -1
- package/es/kits/env.js.map +1 -1
- package/es/modules.d.ts +2 -19
- package/es/modules.js +18 -37
- package/es/modules.js.map +1 -1
- package/es/picker/canvas-picker-service.d.ts +1 -1
- package/es/picker/canvas-picker-service.js +1 -1
- package/es/picker/canvas-picker-service.js.map +1 -1
- package/es/picker/contributions/canvas-picker/arc-picker.js +4 -2
- package/es/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/arc3d-picker.js +4 -2
- package/es/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/area-picker.js +3 -1
- package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/circle-picker.js +4 -2
- package/es/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/glyph-picker.js +1 -1
- package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/image-picker.js +1 -1
- package/es/picker/contributions/canvas-picker/image-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/line-picker.js +5 -3
- package/es/picker/contributions/canvas-picker/line-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/module.js +1 -1
- package/es/picker/contributions/canvas-picker/module.js.map +1 -1
- package/es/picker/contributions/canvas-picker/path-picker.js +5 -3
- package/es/picker/contributions/canvas-picker/path-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/polygon-picker.js +3 -1
- package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/pyramid3d-picker.js +4 -2
- package/es/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/rect-picker.js +5 -3
- package/es/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/rect3d-picker.js +4 -2
- package/es/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/richtext-picker.js +1 -1
- package/es/picker/contributions/canvas-picker/richtext-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/symbol-picker.js +5 -3
- package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/text-picker.js +5 -3
- package/es/picker/contributions/canvas-picker/text-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/arc-picker.js +3 -1
- package/es/picker/contributions/math-picker/arc-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/area-picker.js +3 -1
- package/es/picker/contributions/math-picker/area-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/circle-picker.js +3 -1
- package/es/picker/contributions/math-picker/circle-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/glyph-picker.js +1 -1
- package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/line-picker.js +3 -1
- package/es/picker/contributions/math-picker/line-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/module.js +1 -1
- package/es/picker/contributions/math-picker/module.js.map +1 -1
- package/es/picker/contributions/math-picker/path-picker.js +3 -1
- package/es/picker/contributions/math-picker/path-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/polygon-picker.js +3 -1
- package/es/picker/contributions/math-picker/polygon-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/rect-picker.js +4 -2
- package/es/picker/contributions/math-picker/rect-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/symbol-picker.js +3 -1
- package/es/picker/contributions/math-picker/symbol-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/text-picker.js +1 -1
- package/es/picker/contributions/math-picker/text-picker.js.map +1 -1
- package/es/picker/contributions/modules.js.map +1 -1
- package/es/picker/math-picker-service.d.ts +1 -1
- package/es/picker/math-picker-service.js +1 -1
- package/es/picker/math-picker-service.js.map +1 -1
- package/es/picker/pick-interceptor.js +1 -1
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/pick-modules.js +1 -1
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +1 -1
- package/es/picker/picker-service.js +4 -2
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js +1 -1
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/auto-render-plugin.js +6 -6
- package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +7 -7
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/es/render/contributions/render/arc-render.d.ts +1 -2
- package/es/render/contributions/render/arc-render.js +10 -76
- package/es/render/contributions/render/arc-render.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js +10 -8
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/area-render.d.ts +2 -2
- package/es/render/contributions/render/area-render.js +12 -6
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.js +1 -1
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/circle-render.d.ts +1 -1
- package/es/render/contributions/render/circle-render.js +5 -3
- package/es/render/contributions/render/circle-render.js.map +1 -1
- package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/area-contribution-render.js +3 -1
- package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +5 -3
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.d.ts +2 -2
- package/es/render/contributions/render/draw-contribution.js +7 -3
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.js +4 -2
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/glyph-render.js +3 -1
- package/es/render/contributions/render/glyph-render.js.map +1 -1
- package/es/render/contributions/render/group-render.d.ts +1 -1
- package/es/render/contributions/render/group-render.js +8 -4
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.d.ts +1 -1
- package/es/render/contributions/render/image-render.js +4 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/incremental-area-render.js +5 -3
- package/es/render/contributions/render/incremental-area-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.d.ts +2 -2
- package/es/render/contributions/render/incremental-draw-contribution.js +5 -3
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/incremental-line-render.js +5 -3
- package/es/render/contributions/render/incremental-line-render.js.map +1 -1
- package/es/render/contributions/render/index.d.ts +1 -0
- package/es/render/contributions/render/index.js +2 -0
- package/es/render/contributions/render/index.js.map +1 -1
- package/es/render/contributions/render/line-render.d.ts +1 -2
- package/es/render/contributions/render/line-render.js +11 -7
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/module.js +1 -1
- package/es/render/contributions/render/module.js.map +1 -1
- package/es/render/contributions/render/path-render.d.ts +1 -1
- package/es/render/contributions/render/path-render.js +8 -4
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.d.ts +1 -1
- package/es/render/contributions/render/polygon-render.js +5 -3
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/pyramid3d-render.js +7 -5
- package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.d.ts +1 -1
- package/es/render/contributions/render/rect-render.js +7 -3
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/rect3d-render.js +7 -5
- package/es/render/contributions/render/rect3d-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +4 -2
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.d.ts +1 -1
- package/es/render/contributions/render/symbol-render.js +6 -4
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/text-render.js +9 -7
- package/es/render/contributions/render/text-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +13 -3
- package/es/render/contributions/render/utils.js +76 -5
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/resource-loader/loader.d.ts +1 -1
- package/es/resource-loader/loader.js +8 -8
- package/es/resource-loader/loader.js.map +1 -1
- package/es/{common → tapable}/interface.js +2 -0
- package/es/tapable/interface.js.map +1 -0
- package/es/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/cjs/allocator/index.d.ts +0 -3
- package/cjs/allocator/index.js +0 -21
- package/cjs/allocator/index.js.map +0 -1
- package/cjs/canvas/constants.d.ts +0 -2
- package/cjs/canvas/constants.js +0 -7
- package/cjs/canvas/constants.js.map +0 -1
- package/cjs/canvas/creator.d.ts +0 -3
- package/cjs/canvas/creator.js +0 -18
- package/cjs/canvas/creator.js.map +0 -1
- package/cjs/common/bezier.js +0 -45
- package/cjs/common/bezier.js.map +0 -1
- package/cjs/common/curve/basis.js.map +0 -1
- package/cjs/common/curve/common.d.ts +0 -3
- package/cjs/common/curve/common.js.map +0 -1
- package/cjs/common/curve/index.js.map +0 -1
- package/cjs/common/curve/interface.js +0 -18
- package/cjs/common/curve/interface.js.map +0 -1
- package/cjs/common/curve/linear-closed.d.ts +0 -17
- package/cjs/common/curve/linear-closed.js.map +0 -1
- package/cjs/common/curve/linear.d.ts +0 -17
- package/cjs/common/curve/linear.js.map +0 -1
- package/cjs/common/curve/monotone.js.map +0 -1
- package/cjs/common/curve/step.d.ts +0 -18
- package/cjs/common/curve/step.js.map +0 -1
- package/cjs/common/index.d.ts +0 -20
- package/cjs/common/index.js +0 -30
- package/cjs/common/index.js.map +0 -1
- package/cjs/common/interface.js.map +0 -1
- package/cjs/common/path.d.ts +0 -160
- package/cjs/common/path.js.map +0 -1
- package/cjs/core/contributions/constants.d.ts +0 -1
- package/cjs/core/contributions/constants.js +0 -6
- package/cjs/core/contributions/constants.js.map +0 -1
- package/cjs/graphic/constant.js +0 -22
- package/cjs/graphic/constant.js.map +0 -1
- package/cjs/graphic/graphic-service/index.d.ts +0 -1
- package/cjs/graphic/graphic-service/index.js +0 -21
- package/cjs/graphic/graphic-service/index.js.map +0 -1
- package/cjs/interface/graphic-creator.d.ts +0 -39
- package/cjs/interface/graphic-creator.js +0 -6
- package/cjs/interface/graphic-creator.js.map +0 -1
- package/es/allocator/index.d.ts +0 -3
- package/es/allocator/index.js +0 -5
- package/es/allocator/index.js.map +0 -1
- package/es/canvas/constants.d.ts +0 -2
- package/es/canvas/constants.js +0 -4
- package/es/canvas/constants.js.map +0 -1
- package/es/canvas/creator.d.ts +0 -3
- package/es/canvas/creator.js +0 -14
- package/es/canvas/creator.js.map +0 -1
- package/es/common/bezier.js.map +0 -1
- package/es/common/curve/basis.js.map +0 -1
- package/es/common/curve/common.d.ts +0 -3
- package/es/common/curve/common.js.map +0 -1
- package/es/common/curve/index.js.map +0 -1
- package/es/common/curve/interface.js +0 -6
- package/es/common/curve/interface.js.map +0 -1
- package/es/common/curve/linear-closed.d.ts +0 -17
- package/es/common/curve/linear-closed.js.map +0 -1
- package/es/common/curve/linear.d.ts +0 -17
- package/es/common/curve/linear.js.map +0 -1
- package/es/common/curve/monotone.js.map +0 -1
- package/es/common/curve/step.d.ts +0 -18
- package/es/common/curve/step.js.map +0 -1
- package/es/common/index.d.ts +0 -20
- package/es/common/index.js +0 -40
- package/es/common/index.js.map +0 -1
- package/es/common/interface.js.map +0 -1
- package/es/common/path.d.ts +0 -160
- package/es/common/path.js.map +0 -1
- package/es/core/contributions/constants.d.ts +0 -1
- package/es/core/contributions/constants.js +0 -2
- package/es/core/contributions/constants.js.map +0 -1
- package/es/graphic/constant.js.map +0 -1
- package/es/graphic/graphic-service/index.d.ts +0 -1
- package/es/graphic/graphic-service/index.js +0 -2
- package/es/graphic/graphic-service/index.js.map +0 -1
- package/es/interface/graphic-creator.d.ts +0 -39
- package/es/interface/graphic-creator.js +0 -2
- package/es/interface/graphic-creator.js.map +0 -1
- /package/cjs/common/{curve → segment}/common.js +0 -0
- /package/cjs/{common → tapable}/interface.d.ts +0 -0
- /package/es/common/{curve → segment}/common.js +0 -0
- /package/es/{common → tapable}/interface.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/morphing-utils.ts"],"names":[],"mappings":"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","file":"morphing-utils.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/morphPath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport { getAngleByPoint, IMatrix, isNumberClose, PointService } from '@visactor/vutils';\nimport { ICustomPath2D, IGraphic } from '../interface';\nimport { CustomPath2D } from './path';\nimport { enumCommandMap } from './path-svg';\n\nexport function cubicSubdivide(p0: number, p1: number, p2: number, p3: number, t: number, out: number[]) {\n const p01 = (p1 - p0) * t + p0;\n const p12 = (p2 - p1) * t + p1;\n const p23 = (p3 - p2) * t + p2;\n\n const p012 = (p12 - p01) * t + p01;\n const p123 = (p23 - p12) * t + p12;\n\n const p0123 = (p123 - p012) * t + p012;\n // Seg0\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n // Seg1\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n\nexport function alignSubpath(subpath1: number[], subpath2: number[]): [number[], number[]] {\n const len1 = subpath1.length;\n const len2 = subpath2.length;\n if (len1 === len2) {\n return [subpath1, subpath2];\n }\n const tmpSegX: number[] = [];\n const tmpSegY: number[] = [];\n\n const shorterPath = len1 < len2 ? subpath1 : subpath2;\n const shorterLen = Math.min(len1, len2);\n // Should divide excatly\n const diff = Math.abs(len2 - len1) / 6;\n const shorterBezierCount = (shorterLen - 2) / 6;\n // Add `diff` number of beziers\n const eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount);\n\n const newSubpath = [shorterPath[0], shorterPath[1]];\n let remained = diff;\n\n for (let i = 2; i < shorterLen; i += 6) {\n let x0 = shorterPath[i - 2];\n let y0 = shorterPath[i - 1];\n let x1 = shorterPath[i];\n let y1 = shorterPath[i + 1];\n let x2 = shorterPath[i + 2];\n let y2 = shorterPath[i + 3];\n const x3 = shorterPath[i + 4];\n const y3 = shorterPath[i + 5];\n\n if (remained <= 0) {\n newSubpath.push(x1, y1, x2, y2, x3, y3);\n continue;\n }\n\n const actualSubDivCount = Math.min(remained, eachCurveSubDivCount) + 1;\n for (let k = 1; k <= actualSubDivCount; k++) {\n const p = k / actualSubDivCount;\n\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n\n // tmpSegX[3] === tmpSegX[4]\n x0 = tmpSegX[3];\n y0 = tmpSegY[3];\n\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n x1 = tmpSegX[5];\n y1 = tmpSegY[5];\n x2 = tmpSegX[6];\n y2 = tmpSegY[6];\n // The last point (x3, y3) is still the same.\n }\n remained -= actualSubDivCount - 1;\n }\n\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\n\nfunction createSubpath(lastSubpath: number[], otherSubpath: number[]) {\n const prevSubPath = lastSubpath || otherSubpath;\n const len = prevSubPath.length;\n const lastX = prevSubPath[len - 2];\n const lastY = prevSubPath[len - 1];\n\n const newSubpath: number[] = [];\n for (let i = 0; i < otherSubpath.length; i += 2) {\n newSubpath[i] = lastX;\n newSubpath[i + 1] = lastY;\n }\n return newSubpath;\n}\n\nfunction reverseSubpath(array: number[]) {\n const newArr: number[] = [];\n const len = array.length;\n for (let i = 0; i < len; i += 2) {\n newArr[i] = array[len - i - 2];\n newArr[i + 1] = array[len - i - 1];\n }\n return newArr;\n}\n/**\n * 用于计算内部不相交的多边形中心点\n */\nexport function centroidOfSubpath(array: number[]) {\n // https://en.wikipedia.org/wiki/Centroid#Of_a_polygon\n let signedArea = 0;\n let cx = 0;\n let cy = 0;\n const len = array.length;\n // Polygon should been closed.\n for (let i = 0, j = len - 2; i < len; j = i, i += 2) {\n const x0 = array[j];\n const y0 = array[j + 1];\n const x1 = array[i];\n const y1 = array[i + 1];\n const a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n }\n\n if (signedArea === 0) {\n return [array[0] || 0, array[1] || 0, 0];\n }\n\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\n\n/**\n * 针对闭合的曲线,查找最适合的旋转offset\n */\nfunction findBestRotationOffset(fromSubBeziers: number[], toSubBeziers: number[], fromCp: number[], toCp: number[]) {\n const bezierCount = (fromSubBeziers.length - 2) / 6;\n let bestScore = Infinity;\n let bestOffset = 0;\n\n const len = fromSubBeziers.length;\n const len2 = len - 2;\n\n for (let offset = 0; offset < bezierCount; offset++) {\n const cursorOffset = offset * 6;\n let score = 0;\n\n for (let k = 0; k < len; k += 2) {\n const idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2) + 2;\n\n const x0 = fromSubBeziers[idx] - fromCp[0];\n const y0 = fromSubBeziers[idx + 1] - fromCp[1];\n const x1 = toSubBeziers[k] - toCp[0];\n const y1 = toSubBeziers[k + 1] - toCp[1];\n\n const dx = x1 - x0;\n const dy = y1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestOffset = offset;\n }\n }\n\n return bestOffset;\n}\n\n/**\n * If we interpolating between two bezier curve arrays.\n * It will have many broken effects during the transition.\n * So we try to apply an extra rotation which can make each bezier curve morph as small as possible.\n */\nexport function findBestMorphingRotation(\n fromArr: number[][],\n toArr: number[][],\n searchAngleIteration: number,\n searchAngleRange: number\n) {\n const result = [];\n\n let fromNeedsReverse: boolean;\n\n for (let i = 0; i < fromArr.length; i++) {\n let fromSubpathBezier = fromArr[i];\n const toSubpathBezier = toArr[i];\n\n const fromCp = centroidOfSubpath(fromSubpathBezier);\n const toCp = centroidOfSubpath(toSubpathBezier);\n\n if (fromNeedsReverse == null) {\n // Reverse from array if two have different directions.\n // Determine the clockwise based on the first subpath.\n // Reverse all subpaths or not. Avoid winding rule changed.\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n }\n\n const newFromSubpathBezier: number[] = [];\n const newToSubpathBezier: number[] = [];\n let bestAngle = 0;\n let bestScore = Infinity;\n const tmpArr: number[] = [];\n\n const len = fromSubpathBezier.length;\n if (fromNeedsReverse) {\n // Make sure clockwise\n fromSubpathBezier = reverseSubpath(fromSubpathBezier);\n }\n const offset = findBestRotationOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n\n const len2 = len - 2;\n\n for (let k = 0; k < len2; k += 2) {\n // Not include the start point.\n const idx = ((offset + k) % len2) + 2;\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n }\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n\n if (searchAngleIteration > 0) {\n const step = searchAngleRange / searchAngleIteration;\n for (let angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n const sa = Math.sin(angle);\n const ca = Math.cos(angle);\n let score = 0;\n\n for (let k = 0; k < fromSubpathBezier.length; k += 2) {\n const x0 = newFromSubpathBezier[k];\n const y0 = newFromSubpathBezier[k + 1];\n const x1 = toSubpathBezier[k] - toCp[0];\n const y1 = toSubpathBezier[k + 1] - toCp[1];\n\n // Apply rotation on the target point.\n const newX1 = x1 * ca - y1 * sa;\n const newY1 = x1 * sa + y1 * ca;\n\n tmpArr[k] = newX1;\n tmpArr[k + 1] = newY1;\n\n const dx = newX1 - x0;\n const dy = newY1 - y0;\n\n // Use dot product to have min direction change.\n // const d = Math.sqrt(x0 * x0 + y0 * y0);\n // score += x0 * dx / d + y0 * dy / d;\n score += dx * dx + dy * dy;\n }\n\n if (score < bestScore) {\n bestScore = score;\n bestAngle = angle;\n // Copy.\n for (let m = 0; m < tmpArr.length; m++) {\n newToSubpathBezier[m] = tmpArr[m];\n }\n }\n }\n } else {\n for (let i = 0; i < len; i += 2) {\n newToSubpathBezier[i] = toSubpathBezier[i] - toCp[0];\n newToSubpathBezier[i + 1] = toSubpathBezier[i + 1] - toCp[1];\n }\n }\n\n result.push({\n from: newFromSubpathBezier,\n to: newToSubpathBezier,\n fromCp,\n toCp,\n rotation: -bestAngle\n });\n }\n return result;\n}\n\n/**\n * Make two bezier arrays aligns on structure. To have better animation.\n *\n * It will:\n * Make two bezier arrays have same number of subpaths.\n * Make each subpath has equal number of bezier curves.\n *\n * array is the convert result of pathToBezierCurves.\n */\nexport function alignBezierCurves(array1: number[][], array2: number[][]) {\n let lastSubpath1;\n let lastSubpath2;\n\n const newArray1 = [];\n const newArray2 = [];\n\n for (let i = 0; i < Math.max(array1.length, array2.length); i++) {\n const subpath1 = array1[i];\n const subpath2 = array2[i];\n\n let newSubpath1;\n let newSubpath2;\n\n if (!subpath1) {\n newSubpath1 = createSubpath(lastSubpath1, subpath2);\n newSubpath2 = subpath2;\n } else if (!subpath2) {\n newSubpath2 = createSubpath(lastSubpath2, subpath1);\n newSubpath1 = subpath1;\n } else {\n [newSubpath1, newSubpath2] = alignSubpath(subpath1, subpath2);\n lastSubpath1 = newSubpath1;\n lastSubpath2 = newSubpath2;\n }\n\n newArray1.push(newSubpath1);\n newArray2.push(newSubpath2);\n }\n\n return [newArray1, newArray2];\n}\n\nconst addLineToBezierPath = (bezierPath: number[], x0: number, y0: number, x1: number, y1: number) => {\n if (!(isNumberClose(x0, x1) && isNumberClose(y0, y1))) {\n bezierPath.push(x0, y0, x1, y1, x1, y1);\n }\n};\n\nexport const addArcToBezierPath = (\n bezierPath: number[],\n startAngle: number,\n endAngle: number,\n cx: number,\n cy: number,\n rx: number,\n ry: number\n) => {\n // https://stackoverflow.com/questions/1734745/how-to-create-circle-with-b%C3%A9zier-curves\n const delta = Math.abs(endAngle - startAngle);\n const len = (Math.tan(delta / 4) * 4) / 3;\n const dir = endAngle < startAngle ? -1 : 1;\n\n const c1 = Math.cos(startAngle);\n const s1 = Math.sin(startAngle);\n const c2 = Math.cos(endAngle);\n const s2 = Math.sin(endAngle);\n\n const x1 = c1 * rx + cx;\n const y1 = s1 * ry + cy;\n\n const x4 = c2 * rx + cx;\n const y4 = s2 * ry + cy;\n\n const hx = rx * len * dir;\n const hy = ry * len * dir;\n\n bezierPath.push(\n // Move control points on tangent.\n x1 - hx * s1,\n y1 + hy * c1,\n x4 + hx * s2,\n y4 - hy * c2,\n x4,\n y4\n );\n};\n\nexport function pathToBezierCurves(path: ICustomPath2D): number[][] {\n const commandList = path.commandList;\n\n const bezierArrayGroups: number[][] = [];\n let currentSubpath: number[];\n\n // end point\n let xi: number = 0;\n let yi: number = 0;\n // start point\n let x0: number = 0;\n let y0: number = 0;\n\n const createNewSubpath = (x: number, y: number) => {\n // More than one M command\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n currentSubpath = [x, y];\n };\n\n // the first control point\n let x1: number;\n let y1: number;\n // the second control point\n let x2: number;\n let y2: number;\n\n for (let i = 0, len = commandList.length; i < len; i++) {\n const cmd = commandList[i];\n\n const isFirst = i === 0;\n\n if (isFirst) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n x0 = xi = cmd[1] as number;\n y0 = yi = cmd[2] as number;\n\n if ([enumCommandMap.L, enumCommandMap.C, enumCommandMap.Q].includes(cmd[0])) {\n // Start point\n currentSubpath = [x0, y0];\n }\n }\n\n switch (cmd[0]) {\n case enumCommandMap.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n xi = x0 = cmd[1] as number;\n yi = y0 = cmd[2] as number;\n\n createNewSubpath(x0, y0);\n break;\n case enumCommandMap.L:\n x1 = cmd[1] as number;\n y1 = cmd[2] as number;\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n xi = x1;\n yi = y1;\n break;\n case enumCommandMap.C:\n currentSubpath.push(\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[4] as number,\n (xi = cmd[5] as number),\n (yi = cmd[6] as number)\n );\n break;\n case enumCommandMap.Q:\n x1 = cmd[1] as number;\n y1 = cmd[2] as number;\n x2 = cmd[3] as number;\n y2 = cmd[4] as number;\n currentSubpath.push(\n // Convert quadratic to cubic\n xi + (2 / 3) * (x1 - xi),\n yi + (2 / 3) * (y1 - yi),\n x2 + (2 / 3) * (x1 - x2),\n y2 + (2 / 3) * (y1 - y2),\n x2,\n y2\n );\n xi = x2;\n yi = y2;\n break;\n case enumCommandMap.A: {\n const cx = cmd[1] as number;\n const cy = cmd[2] as number;\n const rx = cmd[3] as number;\n const ry = rx;\n const startAngle = cmd[4] as number;\n const endAngle = cmd[5] as number;\n\n const counterClockwise = !!(cmd[6] as number);\n\n x1 = Math.cos(startAngle) * rx + cx;\n y1 = Math.sin(startAngle) * rx + cy;\n if (isFirst) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n } else {\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n }\n\n xi = Math.cos(endAngle) * rx + cx;\n yi = Math.sin(endAngle) * rx + cy;\n\n const step = ((counterClockwise ? -1 : 1) * Math.PI) / 2;\n\n for (let angle = startAngle; counterClockwise ? angle > endAngle : angle < endAngle; angle += step) {\n const nextAngle = counterClockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);\n addArcToBezierPath(currentSubpath, angle, nextAngle, cx, cy, rx, ry);\n }\n break;\n }\n case enumCommandMap.E: {\n const cx = cmd[1] as number;\n const cy = cmd[2] as number;\n const rx = cmd[3] as number;\n const ry = cmd[4] as number;\n const rotate = cmd[5] as number;\n const startAngle = cmd[6] as number;\n const endAngle = (cmd[7] as number) + startAngle;\n\n const anticlockwise = !!(cmd[8] as number);\n const hasRotate = !isNumberClose(rotate, 0);\n const rc = Math.cos(rotate);\n const rs = Math.sin(rotate);\n\n let xTemp = Math.cos(startAngle) * rx;\n let yTemp = Math.sin(startAngle) * ry;\n\n if (hasRotate) {\n x1 = xTemp * rc - yTemp * rs + cx;\n y1 = xTemp * rs + yTemp * rc + cy;\n } else {\n x1 = xTemp + cx;\n y1 = yTemp + cy;\n }\n if (isFirst) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n } else {\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n }\n\n xTemp = Math.cos(endAngle) * rx;\n yTemp = Math.sin(endAngle) * ry;\n if (hasRotate) {\n xi = xTemp * rc - yTemp * rs + cx;\n yi = xTemp * rs + yTemp * rc + cy;\n } else {\n xi = xTemp + cx;\n yi = yTemp + cy;\n }\n\n const step = ((anticlockwise ? -1 : 1) * Math.PI) / 2;\n\n for (let angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n const nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);\n addArcToBezierPath(currentSubpath, angle, nextAngle, cx, cy, rx, ry);\n\n if (hasRotate) {\n const curLen = currentSubpath.length;\n\n for (let j = curLen - 6; j <= curLen - 1; j += 2) {\n xTemp = currentSubpath[j];\n yTemp = currentSubpath[j + 1];\n\n currentSubpath[j] = (xTemp - cx) * rc - (yTemp - cy) * rs + cx;\n currentSubpath[j + 1] = (xTemp - cx) * rs + (yTemp - cy) * rc + cy;\n }\n }\n }\n\n break;\n }\n case enumCommandMap.R: {\n x0 = xi = cmd[1] as number;\n y0 = yi = cmd[2] as number;\n x1 = x0 + (cmd[3] as number);\n y1 = y0 + (cmd[4] as number);\n\n // rect is an individual path.\n createNewSubpath(x1, y0);\n addLineToBezierPath(currentSubpath, x1, y0, x1, y1);\n addLineToBezierPath(currentSubpath, x1, y1, x0, y1);\n addLineToBezierPath(currentSubpath, x0, y1, x0, y0);\n addLineToBezierPath(currentSubpath, x0, y0, x1, y0);\n break;\n }\n case enumCommandMap.AT: {\n const tx1 = cmd[1] as number;\n const ty1 = cmd[2] as number;\n const tx2 = cmd[3] as number;\n const ty2 = cmd[4] as number;\n const r = cmd[5] as number;\n\n const dis1 = PointService.distancePP({ x: xi, y: yi }, { x: tx1, y: ty1 });\n const dis2 = PointService.distancePP({ x: tx2, y: ty2 }, { x: tx1, y: ty1 });\n const theta = ((xi - tx1) * (tx2 - tx1) + (yi - ty1) * (ty2 - ty1)) / (dis1 * dis2);\n const dis = r / Math.sin(theta / 2);\n const midX = (xi + tx2 - 2 * tx1) / 2;\n const midY = (yi + ty2 - 2 * ty1) / 2;\n const midLen = PointService.distancePP({ x: midX, y: midY }, { x: 0, y: 0 });\n const cx = tx1 + (dis * midX) / midLen;\n const cy = tx2 + (dis * midY) / midLen;\n const disP = Math.sqrt(dis * dis - r * r);\n x0 = tx1 + (disP * (xi - tx1)) / dis1;\n y0 = ty1 + (disP * (yi - ty1)) / dis1;\n\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x0, y0);\n\n xi = tx1 + (disP * (tx2 - tx1)) / dis2;\n yi = ty1 + (disP * (ty2 - ty1)) / dis2;\n\n const startAngle = getAngleByPoint({ x: cx, y: cy }, { x: x0, y: y0 });\n\n const endAngle = getAngleByPoint({ x: cx, y: cy }, { x: xi, y: yi });\n\n addArcToBezierPath(currentSubpath, startAngle, endAngle, cx, cy, r, r);\n\n break;\n }\n case enumCommandMap.Z: {\n currentSubpath && addLineToBezierPath(currentSubpath, xi, yi, x0, y0);\n xi = x0;\n yi = y0;\n break;\n }\n }\n }\n\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n\n return bezierArrayGroups;\n}\n\nexport function applyTransformOnBezierCurves(bezierCurves: number[][], martrix: IMatrix) {\n for (let i = 0; i < bezierCurves.length; i++) {\n const subPath = bezierCurves[i];\n for (let k = 0; k < subPath.length; k += 2) {\n const x = subPath[k];\n const y = subPath[k + 1];\n const res = { x, y };\n\n martrix.transformPoint({ x, y }, res);\n\n subPath[k] = res.x;\n subPath[k + 1] = res.y;\n }\n }\n}\n\nexport function bezierCurversToPath(bezierCurves: number[][]) {\n const path = new CustomPath2D();\n\n for (let i = 0; i < bezierCurves.length; i++) {\n const subPath = bezierCurves[i];\n\n if (subPath.length > 2) {\n path.moveTo(subPath[0], subPath[1]);\n for (let k = 2; k < subPath.length; k += 6) {\n path.bezierCurveTo(subPath[k], subPath[k + 1], subPath[k + 2], subPath[k + 3], subPath[k + 4], subPath[k + 5]);\n }\n }\n }\n\n return path;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/common/morphing-utils.ts"],"names":[],"mappings":"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","file":"morphing-utils.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/morphPath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport { getAngleByPoint, IMatrix, isNumberClose, PointService } from '@visactor/vutils';\nimport { ICustomPath2D } from '../interface';\nimport { CustomPath2D } from './custom-path2d';\nimport { enumCommandMap } from './path-svg';\nimport { addArcToBezierPath } from './shape/arc';\n\nexport function cubicSubdivide(p0: number, p1: number, p2: number, p3: number, t: number, out: number[]) {\n const p01 = (p1 - p0) * t + p0;\n const p12 = (p2 - p1) * t + p1;\n const p23 = (p3 - p2) * t + p2;\n\n const p012 = (p12 - p01) * t + p01;\n const p123 = (p23 - p12) * t + p12;\n\n const p0123 = (p123 - p012) * t + p012;\n // Seg0\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n // Seg1\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n\nexport function alignSubpath(subpath1: number[], subpath2: number[]): [number[], number[]] {\n const len1 = subpath1.length;\n const len2 = subpath2.length;\n if (len1 === len2) {\n return [subpath1, subpath2];\n }\n const tmpSegX: number[] = [];\n const tmpSegY: number[] = [];\n\n const shorterPath = len1 < len2 ? subpath1 : subpath2;\n const shorterLen = Math.min(len1, len2);\n // Should divide excatly\n const diff = Math.abs(len2 - len1) / 6;\n const shorterBezierCount = (shorterLen - 2) / 6;\n // Add `diff` number of beziers\n const eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount);\n\n const newSubpath = [shorterPath[0], shorterPath[1]];\n let remained = diff;\n\n for (let i = 2; i < shorterLen; i += 6) {\n let x0 = shorterPath[i - 2];\n let y0 = shorterPath[i - 1];\n let x1 = shorterPath[i];\n let y1 = shorterPath[i + 1];\n let x2 = shorterPath[i + 2];\n let y2 = shorterPath[i + 3];\n const x3 = shorterPath[i + 4];\n const y3 = shorterPath[i + 5];\n\n if (remained <= 0) {\n newSubpath.push(x1, y1, x2, y2, x3, y3);\n continue;\n }\n\n const actualSubDivCount = Math.min(remained, eachCurveSubDivCount) + 1;\n for (let k = 1; k <= actualSubDivCount; k++) {\n const p = k / actualSubDivCount;\n\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n\n // tmpSegX[3] === tmpSegX[4]\n x0 = tmpSegX[3];\n y0 = tmpSegY[3];\n\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n x1 = tmpSegX[5];\n y1 = tmpSegY[5];\n x2 = tmpSegX[6];\n y2 = tmpSegY[6];\n // The last point (x3, y3) is still the same.\n }\n remained -= actualSubDivCount - 1;\n }\n\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\n\nfunction createSubpath(lastSubpath: number[], otherSubpath: number[]) {\n const prevSubPath = lastSubpath || otherSubpath;\n const len = prevSubPath.length;\n const lastX = prevSubPath[len - 2];\n const lastY = prevSubPath[len - 1];\n\n const newSubpath: number[] = [];\n for (let i = 0; i < otherSubpath.length; i += 2) {\n newSubpath[i] = lastX;\n newSubpath[i + 1] = lastY;\n }\n return newSubpath;\n}\n\nfunction reverseSubpath(array: number[]) {\n const newArr: number[] = [];\n const len = array.length;\n for (let i = 0; i < len; i += 2) {\n newArr[i] = array[len - i - 2];\n newArr[i + 1] = array[len - i - 1];\n }\n return newArr;\n}\n/**\n * 用于计算内部不相交的多边形中心点\n */\nexport function centroidOfSubpath(array: number[]) {\n // https://en.wikipedia.org/wiki/Centroid#Of_a_polygon\n let signedArea = 0;\n let cx = 0;\n let cy = 0;\n const len = array.length;\n // Polygon should been closed.\n for (let i = 0, j = len - 2; i < len; j = i, i += 2) {\n const x0 = array[j];\n const y0 = array[j + 1];\n const x1 = array[i];\n const y1 = array[i + 1];\n const a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n }\n\n if (signedArea === 0) {\n return [array[0] || 0, array[1] || 0, 0];\n }\n\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\n\n/**\n * 针对闭合的曲线,查找最适合的旋转offset\n */\nfunction findBestRotationOffset(fromSubBeziers: number[], toSubBeziers: number[], fromCp: number[], toCp: number[]) {\n const bezierCount = (fromSubBeziers.length - 2) / 6;\n let bestScore = Infinity;\n let bestOffset = 0;\n\n const len = fromSubBeziers.length;\n const len2 = len - 2;\n\n for (let offset = 0; offset < bezierCount; offset++) {\n const cursorOffset = offset * 6;\n let score = 0;\n\n for (let k = 0; k < len; k += 2) {\n const idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2) + 2;\n\n const x0 = fromSubBeziers[idx] - fromCp[0];\n const y0 = fromSubBeziers[idx + 1] - fromCp[1];\n const x1 = toSubBeziers[k] - toCp[0];\n const y1 = toSubBeziers[k + 1] - toCp[1];\n\n const dx = x1 - x0;\n const dy = y1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestOffset = offset;\n }\n }\n\n return bestOffset;\n}\n\n/**\n * If we interpolating between two bezier curve arrays.\n * It will have many broken effects during the transition.\n * So we try to apply an extra rotation which can make each bezier curve morph as small as possible.\n */\nexport function findBestMorphingRotation(\n fromArr: number[][],\n toArr: number[][],\n searchAngleIteration: number,\n searchAngleRange: number\n) {\n const result = [];\n\n let fromNeedsReverse: boolean;\n\n for (let i = 0; i < fromArr.length; i++) {\n let fromSubpathBezier = fromArr[i];\n const toSubpathBezier = toArr[i];\n\n const fromCp = centroidOfSubpath(fromSubpathBezier);\n const toCp = centroidOfSubpath(toSubpathBezier);\n\n if (fromNeedsReverse == null) {\n // Reverse from array if two have different directions.\n // Determine the clockwise based on the first subpath.\n // Reverse all subpaths or not. Avoid winding rule changed.\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n }\n\n const newFromSubpathBezier: number[] = [];\n const newToSubpathBezier: number[] = [];\n let bestAngle = 0;\n let bestScore = Infinity;\n const tmpArr: number[] = [];\n\n const len = fromSubpathBezier.length;\n if (fromNeedsReverse) {\n // Make sure clockwise\n fromSubpathBezier = reverseSubpath(fromSubpathBezier);\n }\n const offset = findBestRotationOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n\n const len2 = len - 2;\n\n for (let k = 0; k < len2; k += 2) {\n // Not include the start point.\n const idx = ((offset + k) % len2) + 2;\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n }\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n\n if (searchAngleIteration > 0) {\n const step = searchAngleRange / searchAngleIteration;\n for (let angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n const sa = Math.sin(angle);\n const ca = Math.cos(angle);\n let score = 0;\n\n for (let k = 0; k < fromSubpathBezier.length; k += 2) {\n const x0 = newFromSubpathBezier[k];\n const y0 = newFromSubpathBezier[k + 1];\n const x1 = toSubpathBezier[k] - toCp[0];\n const y1 = toSubpathBezier[k + 1] - toCp[1];\n\n // Apply rotation on the target point.\n const newX1 = x1 * ca - y1 * sa;\n const newY1 = x1 * sa + y1 * ca;\n\n tmpArr[k] = newX1;\n tmpArr[k + 1] = newY1;\n\n const dx = newX1 - x0;\n const dy = newY1 - y0;\n\n // Use dot product to have min direction change.\n // const d = Math.sqrt(x0 * x0 + y0 * y0);\n // score += x0 * dx / d + y0 * dy / d;\n score += dx * dx + dy * dy;\n }\n\n if (score < bestScore) {\n bestScore = score;\n bestAngle = angle;\n // Copy.\n for (let m = 0; m < tmpArr.length; m++) {\n newToSubpathBezier[m] = tmpArr[m];\n }\n }\n }\n } else {\n for (let i = 0; i < len; i += 2) {\n newToSubpathBezier[i] = toSubpathBezier[i] - toCp[0];\n newToSubpathBezier[i + 1] = toSubpathBezier[i + 1] - toCp[1];\n }\n }\n\n result.push({\n from: newFromSubpathBezier,\n to: newToSubpathBezier,\n fromCp,\n toCp,\n rotation: -bestAngle\n });\n }\n return result;\n}\n\n/**\n * Make two bezier arrays aligns on structure. To have better animation.\n *\n * It will:\n * Make two bezier arrays have same number of subpaths.\n * Make each subpath has equal number of bezier curves.\n *\n * array is the convert result of pathToBezierCurves.\n */\nexport function alignBezierCurves(array1: number[][], array2: number[][]) {\n let lastSubpath1;\n let lastSubpath2;\n\n const newArray1 = [];\n const newArray2 = [];\n\n for (let i = 0; i < Math.max(array1.length, array2.length); i++) {\n const subpath1 = array1[i];\n const subpath2 = array2[i];\n\n let newSubpath1;\n let newSubpath2;\n\n if (!subpath1) {\n newSubpath1 = createSubpath(lastSubpath1, subpath2);\n newSubpath2 = subpath2;\n } else if (!subpath2) {\n newSubpath2 = createSubpath(lastSubpath2, subpath1);\n newSubpath1 = subpath1;\n } else {\n [newSubpath1, newSubpath2] = alignSubpath(subpath1, subpath2);\n lastSubpath1 = newSubpath1;\n lastSubpath2 = newSubpath2;\n }\n\n newArray1.push(newSubpath1);\n newArray2.push(newSubpath2);\n }\n\n return [newArray1, newArray2];\n}\n\nconst addLineToBezierPath = (bezierPath: number[], x0: number, y0: number, x1: number, y1: number) => {\n if (!(isNumberClose(x0, x1) && isNumberClose(y0, y1))) {\n bezierPath.push(x0, y0, x1, y1, x1, y1);\n }\n};\n\nexport function pathToBezierCurves(path: ICustomPath2D): number[][] {\n const commandList = path.commandList;\n\n const bezierArrayGroups: number[][] = [];\n let currentSubpath: number[];\n\n // end point\n let xi: number = 0;\n let yi: number = 0;\n // start point\n let x0: number = 0;\n let y0: number = 0;\n\n const createNewSubpath = (x: number, y: number) => {\n // More than one M command\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n currentSubpath = [x, y];\n };\n\n // the first control point\n let x1: number;\n let y1: number;\n // the second control point\n let x2: number;\n let y2: number;\n\n for (let i = 0, len = commandList.length; i < len; i++) {\n const cmd = commandList[i];\n\n const isFirst = i === 0;\n\n if (isFirst) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n x0 = xi = cmd[1] as number;\n y0 = yi = cmd[2] as number;\n\n if ([enumCommandMap.L, enumCommandMap.C, enumCommandMap.Q].includes(cmd[0])) {\n // Start point\n currentSubpath = [x0, y0];\n }\n }\n\n switch (cmd[0]) {\n case enumCommandMap.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n xi = x0 = cmd[1] as number;\n yi = y0 = cmd[2] as number;\n\n createNewSubpath(x0, y0);\n break;\n case enumCommandMap.L:\n x1 = cmd[1] as number;\n y1 = cmd[2] as number;\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n xi = x1;\n yi = y1;\n break;\n case enumCommandMap.C:\n currentSubpath.push(\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[4] as number,\n (xi = cmd[5] as number),\n (yi = cmd[6] as number)\n );\n break;\n case enumCommandMap.Q:\n x1 = cmd[1] as number;\n y1 = cmd[2] as number;\n x2 = cmd[3] as number;\n y2 = cmd[4] as number;\n currentSubpath.push(\n // Convert quadratic to cubic\n xi + (2 / 3) * (x1 - xi),\n yi + (2 / 3) * (y1 - yi),\n x2 + (2 / 3) * (x1 - x2),\n y2 + (2 / 3) * (y1 - y2),\n x2,\n y2\n );\n xi = x2;\n yi = y2;\n break;\n case enumCommandMap.A: {\n const cx = cmd[1] as number;\n const cy = cmd[2] as number;\n const rx = cmd[3] as number;\n const ry = rx;\n const startAngle = cmd[4] as number;\n const endAngle = cmd[5] as number;\n\n const counterClockwise = !!(cmd[6] as number);\n\n x1 = Math.cos(startAngle) * rx + cx;\n y1 = Math.sin(startAngle) * rx + cy;\n if (isFirst) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n } else {\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n }\n\n xi = Math.cos(endAngle) * rx + cx;\n yi = Math.sin(endAngle) * rx + cy;\n\n const step = ((counterClockwise ? -1 : 1) * Math.PI) / 2;\n\n for (let angle = startAngle; counterClockwise ? angle > endAngle : angle < endAngle; angle += step) {\n const nextAngle = counterClockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);\n addArcToBezierPath(currentSubpath, angle, nextAngle, cx, cy, rx, ry);\n }\n break;\n }\n case enumCommandMap.E: {\n const cx = cmd[1] as number;\n const cy = cmd[2] as number;\n const rx = cmd[3] as number;\n const ry = cmd[4] as number;\n const rotate = cmd[5] as number;\n const startAngle = cmd[6] as number;\n const endAngle = (cmd[7] as number) + startAngle;\n\n const anticlockwise = !!(cmd[8] as number);\n const hasRotate = !isNumberClose(rotate, 0);\n const rc = Math.cos(rotate);\n const rs = Math.sin(rotate);\n\n let xTemp = Math.cos(startAngle) * rx;\n let yTemp = Math.sin(startAngle) * ry;\n\n if (hasRotate) {\n x1 = xTemp * rc - yTemp * rs + cx;\n y1 = xTemp * rs + yTemp * rc + cy;\n } else {\n x1 = xTemp + cx;\n y1 = yTemp + cy;\n }\n if (isFirst) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n } else {\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x1, y1);\n }\n\n xTemp = Math.cos(endAngle) * rx;\n yTemp = Math.sin(endAngle) * ry;\n if (hasRotate) {\n xi = xTemp * rc - yTemp * rs + cx;\n yi = xTemp * rs + yTemp * rc + cy;\n } else {\n xi = xTemp + cx;\n yi = yTemp + cy;\n }\n\n const step = ((anticlockwise ? -1 : 1) * Math.PI) / 2;\n\n for (let angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n const nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);\n addArcToBezierPath(currentSubpath, angle, nextAngle, cx, cy, rx, ry);\n\n if (hasRotate) {\n const curLen = currentSubpath.length;\n\n for (let j = curLen - 6; j <= curLen - 1; j += 2) {\n xTemp = currentSubpath[j];\n yTemp = currentSubpath[j + 1];\n\n currentSubpath[j] = (xTemp - cx) * rc - (yTemp - cy) * rs + cx;\n currentSubpath[j + 1] = (xTemp - cx) * rs + (yTemp - cy) * rc + cy;\n }\n }\n }\n\n break;\n }\n case enumCommandMap.R: {\n x0 = xi = cmd[1] as number;\n y0 = yi = cmd[2] as number;\n x1 = x0 + (cmd[3] as number);\n y1 = y0 + (cmd[4] as number);\n\n // rect is an individual path.\n createNewSubpath(x1, y0);\n addLineToBezierPath(currentSubpath, x1, y0, x1, y1);\n addLineToBezierPath(currentSubpath, x1, y1, x0, y1);\n addLineToBezierPath(currentSubpath, x0, y1, x0, y0);\n addLineToBezierPath(currentSubpath, x0, y0, x1, y0);\n break;\n }\n case enumCommandMap.AT: {\n const tx1 = cmd[1] as number;\n const ty1 = cmd[2] as number;\n const tx2 = cmd[3] as number;\n const ty2 = cmd[4] as number;\n const r = cmd[5] as number;\n\n const dis1 = PointService.distancePP({ x: xi, y: yi }, { x: tx1, y: ty1 });\n const dis2 = PointService.distancePP({ x: tx2, y: ty2 }, { x: tx1, y: ty1 });\n const theta = ((xi - tx1) * (tx2 - tx1) + (yi - ty1) * (ty2 - ty1)) / (dis1 * dis2);\n const dis = r / Math.sin(theta / 2);\n const midX = (xi + tx2 - 2 * tx1) / 2;\n const midY = (yi + ty2 - 2 * ty1) / 2;\n const midLen = PointService.distancePP({ x: midX, y: midY }, { x: 0, y: 0 });\n const cx = tx1 + (dis * midX) / midLen;\n const cy = tx2 + (dis * midY) / midLen;\n const disP = Math.sqrt(dis * dis - r * r);\n x0 = tx1 + (disP * (xi - tx1)) / dis1;\n y0 = ty1 + (disP * (yi - ty1)) / dis1;\n\n // Connect a line between current point to arc start point.\n addLineToBezierPath(currentSubpath, xi, yi, x0, y0);\n\n xi = tx1 + (disP * (tx2 - tx1)) / dis2;\n yi = ty1 + (disP * (ty2 - ty1)) / dis2;\n\n const startAngle = getAngleByPoint({ x: cx, y: cy }, { x: x0, y: y0 });\n\n const endAngle = getAngleByPoint({ x: cx, y: cy }, { x: xi, y: yi });\n\n addArcToBezierPath(currentSubpath, startAngle, endAngle, cx, cy, r, r);\n\n break;\n }\n case enumCommandMap.Z: {\n currentSubpath && addLineToBezierPath(currentSubpath, xi, yi, x0, y0);\n xi = x0;\n yi = y0;\n break;\n }\n }\n }\n\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n\n return bezierArrayGroups;\n}\n\nexport function applyTransformOnBezierCurves(bezierCurves: number[][], martrix: IMatrix) {\n for (let i = 0; i < bezierCurves.length; i++) {\n const subPath = bezierCurves[i];\n for (let k = 0; k < subPath.length; k += 2) {\n const x = subPath[k];\n const y = subPath[k + 1];\n const res = { x, y };\n\n martrix.transformPoint({ x, y }, res);\n\n subPath[k] = res.x;\n subPath[k + 1] = res.y;\n }\n }\n}\n\nexport function bezierCurversToPath(bezierCurves: number[][]) {\n const path = new CustomPath2D();\n\n for (let i = 0; i < bezierCurves.length; i++) {\n const subPath = bezierCurves[i];\n\n if (subPath.length > 2) {\n path.moveTo(subPath[0], subPath[1]);\n for (let k = 2; k < subPath.length; k += 6) {\n path.bezierCurveTo(subPath[k], subPath[k + 1], subPath[k + 2], subPath[k + 3], subPath[k + 4], subPath[k + 5]);\n }\n }\n }\n\n return path;\n}\n"]}
|
package/es/common/polygon.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { IAreaCacheItem, IPath2D } from '../interface';
|
|
2
|
-
import { Direction } from '.';
|
|
1
|
+
import { IAreaCacheItem, IDirection, IPath2D } from '../interface';
|
|
3
2
|
export declare function drawAreaSegments(path: IPath2D, segPath: IAreaCacheItem, percent: number, params?: {
|
|
4
3
|
offsetX?: number;
|
|
5
4
|
offsetY?: number;
|
|
6
5
|
offsetZ?: number;
|
|
7
|
-
direction?:
|
|
6
|
+
direction?: IDirection;
|
|
8
7
|
}): void;
|
package/es/common/render-area.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { abs } from "@visactor/vutils";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Direction } from "./enums";
|
|
4
|
+
|
|
5
|
+
import { divideCubic } from "./segment/curve/cubic-bezier";
|
|
6
|
+
|
|
7
|
+
import { divideLinear } from "./segment/curve/line";
|
|
4
8
|
|
|
5
9
|
export function drawAreaSegments(path, segPath, percent, params) {
|
|
6
10
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/render-area.ts"],"names":[],"mappings":"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","file":"render-area.js","sourcesContent":["import { abs, IPoint, IPointLike } from '@visactor/vutils';\nimport { IAreaCacheItem, ICurve, IPath2D } from '../interface';\nimport { divideCubic, divideLinear, BoundsContext, CubicBezierCurve, LineCurve, Direction, SegContext } from '.';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawAreaSegments(\n path: IPath2D,\n segPath: IAreaCacheItem,\n percent: number,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n direction?: Direction;\n }\n) {\n // const { offsetX = 0, offsetY = 0 } = params || {};\n // let needMoveTo: boolean = true;\n const { top, bottom } = segPath;\n if (percent >= 1) {\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n let lastDefined: boolean = true;\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n }\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let { direction } = params || {};\n const { curves: topCurves } = top;\n const endP = topCurves[topCurves.length - 1].p3 ?? topCurves[topCurves.length - 1].p1;\n const xTotalLength = abs(endP.x - topCurves[0].p0.x);\n const yTotalLength = abs(endP.y - topCurves[0].p0.y);\n direction = direction ?? (xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN);\n if (!Number.isFinite(xTotalLength)) {\n direction = Direction.COLUMN;\n }\n if (!Number.isFinite(yTotalLength)) {\n direction = Direction.ROW;\n }\n\n // x和y必须始终保持同方向\n // 整个线段的总长度(基于水平、垂直方向)\n const totalLength: number = direction === Direction.ROW ? xTotalLength : yTotalLength;\n\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let lastDefined: boolean = true;\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n const curCurveLength = topCurve.getLength(direction);\n const percent = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n if (percent < 0) {\n break;\n }\n drawedLengthUntilLast += curCurveLength;\n let tc: ICurve<IPoint> | null = null;\n let bc: ICurve<IPoint> | null = null;\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n }\n\n if (tc && bc) {\n if (percent < 1) {\n if (tc.p2 && tc.p3) {\n tc = divideCubic(tc as CubicBezierCurve, percent)[0];\n } else {\n tc = divideLinear(tc as LineCurve, percent)[0];\n }\n if (bc.p2 && bc.p3) {\n bc = divideCubic(bc as CubicBezierCurve, 1 - percent)[1];\n } else {\n bc = divideLinear(bc as LineCurve, 1 - percent)[1];\n }\n }\n tc.defined = lastDefined;\n bc.defined = lastDefined;\n topList.push(tc);\n bottomList.push(bc);\n }\n\n tc = null;\n bc = null;\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n // const totalLength = segPath.tryUpdateLength();\n\n // // 直到上次绘制的长度\n // let drawedLengthUntilLast = 0;\n // for (let i = 0, n = curves.length; i < n; i++) {\n // const curve = curves[i];\n // const curCurveLength = curve.getLength();\n // const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n // drawedLengthUntilLast += curCurveLength;\n // if (_p < 0) {\n // break;\n // }\n\n // // 跳过这个点\n // if (!curve.defined()) {\n // needMoveTo = true;\n // continue;\n // }\n // if (needMoveTo) {\n // path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY);\n // }\n // drawSegItem(path, curve, min(_p, 1), params);\n // needMoveTo = false;\n // }\n}\n\nfunction drawAreaBlock(\n path: IPath2D,\n topList: ICurve<IPoint>[],\n bottomList: ICurve<IPoint>[],\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo = true;\n topList.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n needMoveTo = true;\n for (let i = bottomList.length - 1; i >= 0; i--) {\n const curve = bottomList[i];\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n // bottom需要直接line绘制\n path.lineTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n }\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as CubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/common/render-area.ts"],"names":[],"mappings":"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","file":"render-area.js","sourcesContent":["import { abs, IPoint } from '@visactor/vutils';\nimport { IAreaCacheItem, ICubicBezierCurve, ICurve, IDirection, ILineCurve, IPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { divideCubic } from './segment/curve/cubic-bezier';\nimport { divideLinear } from './segment/curve/line';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawAreaSegments(\n path: IPath2D,\n segPath: IAreaCacheItem,\n percent: number,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n direction?: IDirection;\n }\n) {\n // const { offsetX = 0, offsetY = 0 } = params || {};\n // let needMoveTo: boolean = true;\n const { top, bottom } = segPath;\n if (percent >= 1) {\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n let lastDefined: boolean = true;\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n topList.push(topCurve);\n bottomList.push(bottom.curves[n - i - 1]);\n }\n }\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let { direction } = params || {};\n const { curves: topCurves } = top;\n const endP = topCurves[topCurves.length - 1].p3 ?? topCurves[topCurves.length - 1].p1;\n const xTotalLength = abs(endP.x - topCurves[0].p0.x);\n const yTotalLength = abs(endP.y - topCurves[0].p0.y);\n direction = direction ?? (xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN);\n if (!Number.isFinite(xTotalLength)) {\n direction = Direction.COLUMN;\n }\n if (!Number.isFinite(yTotalLength)) {\n direction = Direction.ROW;\n }\n\n // x和y必须始终保持同方向\n // 整个线段的总长度(基于水平、垂直方向)\n const totalLength: number = direction === Direction.ROW ? xTotalLength : yTotalLength;\n\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let lastDefined: boolean = true;\n const topList: ICurve<IPoint>[] = [];\n const bottomList: ICurve<IPoint>[] = [];\n for (let i = 0, n = top.curves.length; i < n; i++) {\n const topCurve = top.curves[i];\n const curCurveLength = topCurve.getLength(direction);\n const percent = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n if (percent < 0) {\n break;\n }\n drawedLengthUntilLast += curCurveLength;\n let tc: ICurve<IPoint> | null = null;\n let bc: ICurve<IPoint> | null = null;\n if (lastDefined !== topCurve.defined) {\n if (lastDefined) {\n drawAreaBlock(path, topList, bottomList, params);\n topList.length = 0;\n bottomList.length = 0;\n } else {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n lastDefined = !lastDefined;\n } else {\n if (lastDefined) {\n tc = topCurve;\n bc = bottom.curves[n - i - 1];\n }\n }\n\n if (tc && bc) {\n if (percent < 1) {\n if (tc.p2 && tc.p3) {\n tc = divideCubic(tc as ICubicBezierCurve, percent)[0];\n } else {\n tc = divideLinear(tc as ILineCurve, percent)[0];\n }\n if (bc.p2 && bc.p3) {\n bc = divideCubic(bc as ICubicBezierCurve, 1 - percent)[1];\n } else {\n bc = divideLinear(bc as ILineCurve, 1 - percent)[1];\n }\n }\n tc.defined = lastDefined;\n bc.defined = lastDefined;\n topList.push(tc);\n bottomList.push(bc);\n }\n\n tc = null;\n bc = null;\n }\n drawAreaBlock(path, topList, bottomList, params);\n\n // const totalLength = segPath.tryUpdateLength();\n\n // // 直到上次绘制的长度\n // let drawedLengthUntilLast = 0;\n // for (let i = 0, n = curves.length; i < n; i++) {\n // const curve = curves[i];\n // const curCurveLength = curve.getLength();\n // const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n // drawedLengthUntilLast += curCurveLength;\n // if (_p < 0) {\n // break;\n // }\n\n // // 跳过这个点\n // if (!curve.defined()) {\n // needMoveTo = true;\n // continue;\n // }\n // if (needMoveTo) {\n // path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY);\n // }\n // drawSegItem(path, curve, min(_p, 1), params);\n // needMoveTo = false;\n // }\n}\n\nfunction drawAreaBlock(\n path: IPath2D,\n topList: ICurve<IPoint>[],\n bottomList: ICurve<IPoint>[],\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo = true;\n topList.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n needMoveTo = true;\n for (let i = bottomList.length - 1; i >= 0; i--) {\n const curve = bottomList[i];\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n // bottom需要直接line绘制\n path.lineTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n }\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as ICubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ISegPath2D } from '
|
|
2
|
-
import { IAreaSegment, IClipRangeByDimensionType, IPath2D, ISegment } from '../interface';
|
|
1
|
+
import type { IAreaSegment, IClipRangeByDimensionType, IPath2D, ISegment, ISegPath2D } from '../interface';
|
|
3
2
|
export declare function drawSegments(path: IPath2D, segPath: ISegPath2D, percent: number, clipRangeByDimension: IClipRangeByDimensionType, params?: {
|
|
4
3
|
offsetX?: number;
|
|
5
4
|
offsetY?: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { min } from "@visactor/vutils";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Direction } from "./enums";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { divideCubic } from "./segment/curve/cubic-bezier";
|
|
6
6
|
|
|
7
7
|
export function drawSegments(path, segPath, percent, clipRangeByDimension, params) {
|
|
8
8
|
const {offsetX: offsetX = 0, offsetY: offsetY = 0, offsetZ: offsetZ = 0} = params || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/render-curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAsB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAA2D,MAAM,GAAG,CAAC;AAEzF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAW1C,MAAM,UAAU,YAAY,CAC1B,IAAa,EACb,OAAmB,EACnB,OAAe,EACf,oBAA+C,EAC/C,MAIC;IAED,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAC/D,IAAI,UAAU,GAAY,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,EAAE;QAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAErB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAClB,UAAU,GAAG,IAAI,CAAC;gBAClB,OAAO;aACR;YACD,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;aAClE;YACD,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACpC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO;KACR;IACD,IAAI,OAAO,IAAI,CAAC,EAAE;QAChB,OAAO;KACR;IAED,IAAI,SAAgC,CAAC;IAErC,IAAI,oBAAoB,KAAK,GAAG,EAAE;QAChC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;KAC3B;SAAM,IAAI,oBAAoB,KAAK,GAAG,EAAE;QACvC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;KAC9B;SAAM,IAAI,oBAAoB,KAAK,MAAM,EAAE;QAC1C,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;KAC/B;IAGD,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,CAAC;IAE9C,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,cAAc,CAAC;QACtE,qBAAqB,IAAI,cAAc,CAAC;QACxC,IAAI,EAAE,GAAG,CAAC,EAAE;YACV,MAAM;SACP;QAGD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;SACV;QACD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;SAClE;QACD,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,UAAU,GAAG,KAAK,CAAC;KACpB;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,OAAiB,EACjB,QAAkB,EAClB,MAGC;IAED,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC1B,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YAC1C,OAAO;SACR;QACD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAa,EACb,OAAqB,EACrB,QAAsB,EACtB,MAGC;IAED,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,iBAAiB,GAAmB,EAAE,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE;YAC/B,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE;gBACrB,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aACrC;YACD,OAAO,GAAG,CAAC,CAAC;SACb;KACF;IACD,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/B,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;QACtC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QAEpD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;gBAC1C,OAAO;aACR;YACD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,MAAA,CAAC,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC,EAAE,MAAA,CAAC,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,MAAM,CAAC,MAAA,MAAM,CAAC,EAAE,mCAAI,MAAM,CAAC,CAAC,EAAE,MAAA,MAAM,CAAC,EAAE,mCAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,SAAS,WAAW,CAClB,GAAY,EACZ,KAAqB,EACrB,UAAkB,EAClB,MAOC;IAED,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;QACb,OAAO;KACR;IACD,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAG/D,IAAI,UAAU,KAAK,CAAC,EAAE;QACpB,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;YACxB,GAAG,CAAC,aAAa,CACf,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,CACR,CAAC;SACH;aAAM;YAEL,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACjE;KACF;SAAM;QAEL,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAyB,EAAE,UAAU,CAAC,CAAC;YACpE,GAAG,CAAC,aAAa,CACf,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EACrB,OAAO,CACR,CAAC;SACH;aAAM;YAEL,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACnD;KACF;AACH,CAAC","file":"render-curve.js","sourcesContent":["import { min, IPoint, IPointLike } from '@visactor/vutils';\nimport { divideCubic, CubicBezierCurve, SegContext, BoundsContext, ISegPath2D } from '.';\nimport { IAreaSegment, IClipRangeByDimensionType, ICurve, IPath2D, ISegment } from '../interface';\nimport { Direction } from './seg-context';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: Direction | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const { points } = segments;\n // 分段\n const definedPointsList: IPointLike[][] = [];\n let lastIdx = 0;\n for (let i = 0; i < points.length; i++) {\n if (points[i].defined === false) {\n if (lastIdx + 1 !== i) {\n definedPointsList.slice(lastIdx, i);\n }\n lastIdx = i;\n }\n }\n definedPointsList.length === 0;\n definedPointsList.push(points);\n definedPointsList.forEach((points, i) => {\n const startP = lastSeg && i === 0 ? lastSeg.points[lastSeg.points.length - 1] : points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n // 绘制上层\n points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n // 绘制下层\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.lineTo(startP.x1 ?? startP.x, startP.y1 ?? startP.y);\n path.closePath();\n });\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as CubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/common/render-curve.ts"],"names":[],"mappings":"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","file":"render-curve.js","sourcesContent":["import { min, IPoint, IPointLike } from '@visactor/vutils';\n\nimport type {\n IAreaSegment,\n IClipRangeByDimensionType,\n ICubicBezierCurve,\n ICurve,\n IDirection,\n IPath2D,\n ISegment,\n ISegPath2D\n} from '../interface';\nimport { Direction } from './enums';\nimport { divideCubic } from './segment/curve/cubic-bezier';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: IDirection | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const { points } = segments;\n // 分段\n const definedPointsList: IPointLike[][] = [];\n let lastIdx = 0;\n for (let i = 0; i < points.length; i++) {\n if (points[i].defined === false) {\n if (lastIdx + 1 !== i) {\n definedPointsList.slice(lastIdx, i);\n }\n lastIdx = i;\n }\n }\n definedPointsList.length === 0;\n definedPointsList.push(points);\n definedPointsList.forEach((points, i) => {\n const startP = lastSeg && i === 0 ? lastSeg.points[lastSeg.points.length - 1] : points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n // 绘制上层\n points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n // 绘制下层\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.lineTo(startP.x1 ?? startP.x, startP.y1 ?? startP.y);\n path.closePath();\n });\n}\n\n/**\n * 绘制某个segment\n * @param ctx\n * @param seg\n * @param t 绘制这个segment的比例,t > 0从start到end,t < 0从end到start\n */\nfunction drawSegItem(\n ctx: IPath2D,\n curve: ICurve<IPoint>,\n endPercent: number,\n params?: {\n startLenPercent?: number;\n endLenPercent?: number;\n start?: number;\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n }\n) {\n if (!curve.p1) {\n return;\n }\n const { offsetX = 0, offsetY = 0, offsetZ = 0 } = params || {};\n\n // 完全绘制\n if (endPercent === 1) {\n if (curve.p2 && curve.p3) {\n ctx.bezierCurveTo(\n offsetX + curve.p1.x,\n offsetY + curve.p1.y,\n offsetX + curve.p2.x,\n offsetY + curve.p2.y,\n offsetX + curve.p3.x,\n offsetY + curve.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n ctx.lineTo(offsetX + curve.p1.x, offsetY + curve.p1.y, offsetZ);\n }\n } else {\n // 绘制一部分\n if (curve.p2 && curve.p3) {\n const [curve1] = divideCubic(curve as ICubicBezierCurve, endPercent);\n ctx.bezierCurveTo(\n offsetX + curve1.p1.x,\n offsetY + curve1.p1.y,\n offsetX + curve1.p2.x,\n offsetY + curve1.p2.y,\n offsetX + curve1.p3.x,\n offsetY + curve1.p3.y,\n offsetZ\n );\n } else {\n // linear的线段\n const p = curve.getPointAt(endPercent);\n ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);\n }\n }\n}\n"]}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { IPoint } from '@visactor/vutils';
|
|
2
|
-
import { ICurve, ICurveType } from '../interface';
|
|
3
|
-
import { ISegPath2D } from './curve/interface';
|
|
4
|
-
import { LineCurve } from './path';
|
|
5
|
-
export declare enum Direction {
|
|
6
|
-
ROW = 1,
|
|
7
|
-
COLUMN = 2
|
|
8
|
-
}
|
|
2
|
+
import type { ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';
|
|
9
3
|
export declare class SegContext implements ISegPath2D {
|
|
10
4
|
private _lastX;
|
|
11
5
|
private _lastY;
|
|
@@ -14,11 +8,11 @@ export declare class SegContext implements ISegPath2D {
|
|
|
14
8
|
get endX(): number;
|
|
15
9
|
get endY(): number;
|
|
16
10
|
curves: ICurve<IPoint>[];
|
|
17
|
-
direction:
|
|
11
|
+
direction: IDirection;
|
|
18
12
|
curveType: ICurveType;
|
|
19
13
|
length: number;
|
|
20
|
-
constructor(curveType: ICurveType, direction:
|
|
21
|
-
init(curveType: ICurveType, direction:
|
|
14
|
+
constructor(curveType: ICurveType, direction: IDirection);
|
|
15
|
+
init(curveType: ICurveType, direction: IDirection): void;
|
|
22
16
|
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): void;
|
|
23
17
|
closePath(): void;
|
|
24
18
|
ellipse(): void;
|
|
@@ -26,11 +20,11 @@ export declare class SegContext implements ISegPath2D {
|
|
|
26
20
|
moveTo(x: number, y: number): ISegPath2D;
|
|
27
21
|
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
|
|
28
22
|
clear(): void;
|
|
29
|
-
tryUpdateLength(direction?:
|
|
30
|
-
protected addLinearCurve(x: number, y: number, defined: boolean):
|
|
23
|
+
tryUpdateLength(direction?: IDirection): number;
|
|
24
|
+
protected addLinearCurve(x: number, y: number, defined: boolean): ILineCurve;
|
|
31
25
|
getPointAt(t: number): IPoint;
|
|
32
26
|
getCurveLengths(): number[];
|
|
33
|
-
getLength(direction?:
|
|
27
|
+
getLength(direction?: IDirection): number;
|
|
34
28
|
}
|
|
35
29
|
export declare class ReflectSegContext extends SegContext {
|
|
36
30
|
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): void;
|
package/es/common/seg-context.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { abs, Point } from "@visactor/vutils";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Direction } from "./enums";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { CubicBezierCurve } from "./segment/curve/cubic-bezier";
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
Direction[Direction.ROW = 1] = "ROW", Direction[Direction.COLUMN = 2] = "COLUMN";
|
|
9
|
-
}(Direction || (Direction = {}));
|
|
7
|
+
import { LineCurve } from "./segment/curve/line";
|
|
10
8
|
|
|
11
9
|
export class SegContext {
|
|
12
10
|
get endX() {
|
|
@@ -90,4 +88,4 @@ export class ReflectSegContext extends SegContext {
|
|
|
90
88
|
return super.clear();
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
|
-
//# sourceMappingURL=seg-context.js.map
|
|
91
|
+
//# sourceMappingURL=seg-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/seg-context.ts"],"names":[],"mappings":"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","file":"seg-context.js","sourcesContent":["import { abs, IPoint, Point } from '@visactor/vutils';\nimport { ICurve, ICurveType } from '../interface';\nimport { ISegPath2D } from './curve/interface';\nimport { CubicBezierCurve, LineCurve } from './path';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\nexport enum Direction {\n ROW = 1,\n COLUMN = 2\n}\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: Direction;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: Direction) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: Direction) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): void {\n const curve: CubicBezierCurve = 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 curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean): void {\n const curve = this.addLinearCurve(x, y, defined);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n moveTo(x: number, y: number): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: Direction): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean): LineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: Direction): number {\n if (direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined);\n }\n lineTo(x: number, y: number, defined: boolean): void {\n return super.lineTo(y, x, defined);\n }\n moveTo(x: number, y: number): ISegPath2D {\n return super.moveTo(y, x);\n }\n clear() {\n return super.clear();\n }\n}\n\n// export class ReflectContextWrap implements IPath {\n// ctx: IPath;\n// constructor(path: IPath) {\n// this.ctx = path;\n// }\n\n// // @ts-ignore\n// arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void {\n// return this.ctx.arc(y, x, radius, startAngle, endAngle, counterclockwise);\n// }\n// // @ts-ignore\n// arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n// return this.ctx.arcTo(y1, x1, y2, x2, radius);\n// }\n// // @ts-ignore\n// bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n// return this.ctx.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x);\n// }\n// closePath(): void {\n// return this.ctx.closePath();\n// }\n// // @ts-ignore\n// ellipse(\n// x: number,\n// y: number,\n// radiusX: number,\n// radiusY: number,\n// rotation: number,\n// startAngle: number,\n// endAngle: number,\n// counterclockwise?: boolean\n// ): void {\n// return this.ctx.ellipse(y, x, radiusY, radiusX, rotation, startAngle, endAngle, counterclockwise);\n// }\n// lineTo(x: number, y: number): void {\n// return this.ctx.lineTo(y, x);\n// }\n// moveTo(x: number, y: number): void {\n// return this.ctx.moveTo(y, x);\n// }\n// // @ts-ignore\n// quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n// return this.ctx.quadraticCurveTo(cpy, cpx, y, x);\n// }\n// // @ts-ignore\n// rect(x: number, y: number, w: number, h: number): void {\n// return this.rect(y, x, w, h);\n// }\n// }\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/common/seg-context.ts"],"names":[],"mappings":"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","file":"seg-context.js","sourcesContent":["import { abs, IPoint, Point } from '@visactor/vutils';\nimport type { ICubicBezierCurve, ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { CubicBezierCurve } from './segment/curve/cubic-bezier';\nimport { LineCurve } from './segment/curve/line';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: IDirection;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: IDirection) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: IDirection) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): 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 curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean): void {\n const curve = this.addLinearCurve(x, y, defined);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n moveTo(x: number, y: number): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: IDirection): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: IDirection): number {\n if (direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, defined: boolean): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined);\n }\n lineTo(x: number, y: number, defined: boolean): void {\n return super.lineTo(y, x, defined);\n }\n moveTo(x: number, y: number): ISegPath2D {\n return super.moveTo(y, x);\n }\n clear() {\n return super.clear();\n }\n}\n\n// export class ReflectContextWrap implements IPath {\n// ctx: IPath;\n// constructor(path: IPath) {\n// this.ctx = path;\n// }\n\n// // @ts-ignore\n// arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void {\n// return this.ctx.arc(y, x, radius, startAngle, endAngle, counterclockwise);\n// }\n// // @ts-ignore\n// arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n// return this.ctx.arcTo(y1, x1, y2, x2, radius);\n// }\n// // @ts-ignore\n// bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n// return this.ctx.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x);\n// }\n// closePath(): void {\n// return this.ctx.closePath();\n// }\n// // @ts-ignore\n// ellipse(\n// x: number,\n// y: number,\n// radiusX: number,\n// radiusY: number,\n// rotation: number,\n// startAngle: number,\n// endAngle: number,\n// counterclockwise?: boolean\n// ): void {\n// return this.ctx.ellipse(y, x, radiusY, radiusX, rotation, startAngle, endAngle, counterclockwise);\n// }\n// lineTo(x: number, y: number): void {\n// return this.ctx.lineTo(y, x);\n// }\n// moveTo(x: number, y: number): void {\n// return this.ctx.moveTo(y, x);\n// }\n// // @ts-ignore\n// quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n// return this.ctx.quadraticCurveTo(cpy, cpx, y, x);\n// }\n// // @ts-ignore\n// rect(x: number, y: number, w: number, h: number): void {\n// return this.rect(y, x, w, h);\n// }\n// }\n"]}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { IPointLike } from '@visactor/vutils';
|
|
2
|
-
import {
|
|
3
|
-
import { SegContext } from '../seg-context';
|
|
2
|
+
import { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';
|
|
4
3
|
export declare function point(curveClass: Basis, x: number, y: number, defined: boolean): void;
|
|
5
|
-
export declare class Basis
|
|
4
|
+
export declare class Basis implements ICurvedSegment {
|
|
6
5
|
private _lastDefined?;
|
|
7
6
|
context: ISegPath2D;
|
|
8
7
|
protected startPoint?: IPointLike;
|
|
9
8
|
constructor(context: ISegPath2D, startPoint?: IPointLike);
|
|
9
|
+
_x: number;
|
|
10
|
+
_y: number;
|
|
11
|
+
_x0: number;
|
|
12
|
+
_x1: number;
|
|
13
|
+
_y0: number;
|
|
14
|
+
_y1: number;
|
|
15
|
+
_line: number;
|
|
16
|
+
_point: number;
|
|
10
17
|
areaStart(): void;
|
|
11
18
|
areaEnd(): void;
|
|
12
19
|
lineStart(): void;
|
|
@@ -14,5 +21,5 @@ export declare class Basis extends ACurveTypeClass {
|
|
|
14
21
|
point(p: IPointLike): void;
|
|
15
22
|
tryUpdateLength(): number;
|
|
16
23
|
}
|
|
17
|
-
export declare function genBasisTypeSegments(path:
|
|
18
|
-
export declare function genBasisSegments(points: IPointLike[], params?: IGenSegmentParams):
|
|
24
|
+
export declare function genBasisTypeSegments(path: ILinearSegment, points: IPointLike[]): void;
|
|
25
|
+
export declare function genBasisSegments(points: IPointLike[], params?: IGenSegmentParams): ISegPath2D | null;
|
|
@@ -4,17 +4,17 @@ import { genLinearSegments } from "./linear";
|
|
|
4
4
|
|
|
5
5
|
import { genCurveSegments } from "./common";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { SegContext } from "../seg-context";
|
|
8
8
|
|
|
9
|
-
import { Direction
|
|
9
|
+
import { Direction } from "../enums";
|
|
10
10
|
|
|
11
11
|
export function point(curveClass, x, y, defined) {
|
|
12
12
|
curveClass.context.bezierCurveTo((2 * curveClass._x0 + curveClass._x1) / 3, (2 * curveClass._y0 + curveClass._y1) / 3, (curveClass._x0 + 2 * curveClass._x1) / 3, (curveClass._y0 + 2 * curveClass._y1) / 3, (curveClass._x0 + 4 * curveClass._x1 + x) / 6, (curveClass._y0 + 4 * curveClass._y1 + y) / 6, defined);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export class Basis
|
|
15
|
+
export class Basis {
|
|
16
16
|
constructor(context, startPoint) {
|
|
17
|
-
|
|
17
|
+
this.context = context, this.startPoint = startPoint;
|
|
18
18
|
}
|
|
19
19
|
areaStart() {
|
|
20
20
|
this._line = 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/common/segment/basis.ts"],"names":[],"mappings":"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","file":"basis.js","sourcesContent":["import { abs, IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments } from './common';\nimport { SegContext } from '../seg-context';\nimport { Direction } from '../enums';\nimport { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/basis.js\nexport function point(curveClass: Basis, x: number, y: number, defined: boolean) {\n curveClass.context.bezierCurveTo(\n (2 * curveClass._x0 + curveClass._x1) / 3,\n (2 * curveClass._y0 + curveClass._y1) / 3,\n (curveClass._x0 + 2 * curveClass._x1) / 3,\n (curveClass._y0 + 2 * curveClass._y1) / 3,\n (curveClass._x0 + 4 * curveClass._x1 + x) / 6,\n (curveClass._y0 + 4 * curveClass._y1 + y) / 6,\n defined\n );\n}\n\nexport class Basis implements ICurvedSegment {\n private _lastDefined?: boolean;\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n point(\n this,\n this._x1 * 6 - (this._x0 + 4 * this._x1),\n this._y1 * 6 - (this._y0 + 4 * this._y1),\n this._lastDefined !== false\n ); // falls through\n // case 2: this.context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false)\n : this.context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n // case 2: this._point = 3; this.context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6, i, defined1, defined2); // falls through\n default:\n point(this, x, y, this._lastDefined !== false && p.defined !== false);\n break;\n }\n (this._x0 = this._x1), (this._x1 = x);\n (this._y0 = this._y1), (this._y1 = y);\n this._lastDefined = p.defined;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genBasisTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genBasisSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = new SegContext(\n 'basis',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const basis = new Basis(segContext, startPoint);\n\n genBasisTypeSegments(basis, points);\n\n return segContext;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/common/segment/common.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,gBAAgB,CAAC,IAAoB,EAAE,MAAoB,EAAE,OAAe,CAAC;IAC3F,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;YACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;SACF;QACD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACvB;KACF;AACH,CAAC","file":"common.js","sourcesContent":["import { IPointLike } from '@visactor/vutils';\nimport { ILinearSegment } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 公用的绘制curve的方法\n * @param path\n * @param points\n * @param step\n */\nexport function genCurveSegments(path: ILinearSegment, points: IPointLike[], step: number = 1): void {\n let defined0 = false;\n for (let i = 0, n = points.length; i <= n; i++) {\n if (i >= n === defined0) {\n if ((defined0 = !defined0)) {\n path.lineStart();\n } else {\n path.lineEnd();\n }\n }\n if (defined0) {\n path.point(points[i]);\n }\n }\n}\n"]}
|