@visactor/vrender-core 0.20.0-alpha.1 → 0.20.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/animate/Ticker/default-ticker.d.ts +2 -53
- package/cjs/animate/Ticker/default-ticker.js +17 -130
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/Ticker/index.d.ts +4 -0
- package/cjs/animate/Ticker/index.js +3 -1
- package/cjs/animate/Ticker/index.js.map +1 -1
- package/cjs/animate/Ticker/manual-ticker-handler.d.ts +15 -0
- package/cjs/animate/Ticker/manual-ticker-handler.js +36 -0
- package/cjs/animate/Ticker/manual-ticker-handler.js.map +1 -0
- package/cjs/animate/Ticker/manual-ticker.d.ts +19 -0
- package/cjs/animate/Ticker/manual-ticker.js +37 -0
- package/cjs/animate/Ticker/manual-ticker.js.map +1 -0
- package/cjs/animate/Ticker/raf-tick-handler.d.ts +9 -0
- package/cjs/animate/Ticker/raf-tick-handler.js +30 -0
- package/cjs/animate/Ticker/raf-tick-handler.js.map +1 -0
- package/cjs/animate/Ticker/timeout-tick-handler.d.ts +9 -0
- package/cjs/animate/Ticker/timeout-tick-handler.js +28 -0
- package/cjs/animate/Ticker/timeout-tick-handler.js.map +1 -0
- package/cjs/animate/Ticker/type.d.ts +6 -0
- package/cjs/animate/Ticker/type.js +11 -0
- package/cjs/animate/Ticker/type.js.map +1 -0
- package/cjs/canvas/conical-gradient.js.map +1 -1
- package/cjs/canvas/contributions/base-canvas.js +4 -13
- package/cjs/canvas/contributions/base-canvas.js.map +1 -1
- package/cjs/common/3d-interceptor.js +1 -2
- package/cjs/common/bounds-context.js +2 -1
- package/cjs/common/morphing-utils.js +1 -1
- package/cjs/common/path-svg.js +1 -1
- package/cjs/common/polygon.js +2 -2
- package/cjs/common/rect-utils.js +1 -1
- package/cjs/common/render-area.js +1 -1
- package/cjs/common/render-command-list.js +1 -2
- package/cjs/common/render-curve.js +1 -1
- package/cjs/common/render-utils.js +1 -1
- package/cjs/common/seg-context.js +1 -1
- package/cjs/common/segment/catmull-rom-close.d.ts +41 -0
- package/cjs/common/segment/catmull-rom-close.js +81 -0
- package/cjs/common/segment/catmull-rom-close.js.map +1 -0
- package/cjs/common/segment/catmull-rom.d.ts +38 -0
- package/cjs/common/segment/catmull-rom.js +97 -0
- package/cjs/common/segment/catmull-rom.js.map +1 -0
- package/cjs/common/segment/index.d.ts +5 -2
- package/cjs/common/segment/index.js +8 -1
- package/cjs/common/segment/index.js.map +1 -1
- package/cjs/common/simplify.js +1 -1
- package/cjs/common/sort.js +1 -1
- package/cjs/common/split-path.js +1 -1
- package/cjs/common/store.js +1 -1
- package/cjs/common/text.js +4 -3
- package/cjs/common/text.js.map +1 -1
- package/cjs/core/application.js +2 -1
- package/cjs/core/camera.js +1 -1
- package/cjs/core/constants.js +1 -1
- package/cjs/core/contributions/layerHandler/modules.js +2 -5
- package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
- package/cjs/core/core-modules.js +1 -1
- package/cjs/core/global-module.js +2 -0
- package/cjs/core/global.js +1 -1
- package/cjs/core/graphic-utils.js +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/layer-service.js +1 -1
- package/cjs/core/layer.js +1 -1
- package/cjs/core/light.js +1 -1
- package/cjs/core/stage.d.ts +2 -2
- package/cjs/core/stage.js +10 -4
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.js +1 -1
- package/cjs/event/federated-event/base-event.js +12 -2
- package/cjs/event/federated-event/base-event.js.map +1 -1
- package/cjs/graphic/arc.d.ts +6 -4
- package/cjs/graphic/arc.js +46 -17
- package/cjs/graphic/arc.js.map +1 -1
- package/cjs/graphic/arc3d.d.ts +2 -2
- package/cjs/graphic/arc3d.js +8 -9
- package/cjs/graphic/arc3d.js.map +1 -1
- package/cjs/graphic/area.d.ts +5 -3
- package/cjs/graphic/area.js +27 -12
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/builtin-symbol/index.d.ts +1 -1
- package/cjs/graphic/builtin-symbol/thin-triangle.d.ts +2 -2
- package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -2
- package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-down.d.ts +1 -2
- package/cjs/graphic/builtin-symbol/triangle-down.js +4 -9
- package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-left.d.ts +0 -1
- package/cjs/graphic/builtin-symbol/triangle-left.js +3 -8
- package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-right.d.ts +1 -2
- package/cjs/graphic/builtin-symbol/triangle-right.js +4 -9
- package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-up.d.ts +1 -2
- package/cjs/graphic/builtin-symbol/triangle-up.js +4 -9
- package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle.d.ts +1 -2
- package/cjs/graphic/builtin-symbol/triangle.js +1 -3
- package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
- package/cjs/graphic/circle.d.ts +5 -3
- package/cjs/graphic/circle.js +20 -12
- package/cjs/graphic/circle.js.map +1 -1
- package/cjs/graphic/config.js +6 -3
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/glyph.d.ts +4 -2
- package/cjs/graphic/glyph.js +9 -2
- package/cjs/graphic/glyph.js.map +1 -1
- package/cjs/graphic/graphic-creator.js.map +1 -1
- package/cjs/graphic/graphic-service/common-outer-boder-bounds.d.ts +3 -0
- package/cjs/graphic/graphic-service/common-outer-boder-bounds.js +17 -0
- package/cjs/graphic/graphic-service/common-outer-boder-bounds.js.map +1 -0
- package/cjs/graphic/graphic-service/graphic-service.d.ts +7 -36
- package/cjs/graphic/graphic-service/graphic-service.js +11 -296
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic-service/symbol-outer-border-bounds.d.ts +3 -0
- package/cjs/graphic/graphic-service/symbol-outer-border-bounds.js +17 -0
- package/cjs/graphic/graphic-service/symbol-outer-border-bounds.js.map +1 -0
- package/cjs/graphic/graphic.d.ts +12 -9
- package/cjs/graphic/graphic.js +17 -2
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.d.ts +7 -3
- package/cjs/graphic/group.js +34 -22
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/image.d.ts +3 -2
- package/cjs/graphic/image.js +14 -9
- package/cjs/graphic/image.js.map +1 -1
- package/cjs/graphic/line.d.ts +5 -3
- package/cjs/graphic/line.js +24 -11
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/node-tree.js.map +1 -1
- package/cjs/graphic/path.d.ts +3 -3
- package/cjs/graphic/path.js +17 -13
- package/cjs/graphic/path.js.map +1 -1
- package/cjs/graphic/polygon.d.ts +4 -3
- package/cjs/graphic/polygon.js +16 -11
- package/cjs/graphic/polygon.js.map +1 -1
- package/cjs/graphic/pyramid3d.d.ts +2 -2
- package/cjs/graphic/pyramid3d.js +10 -9
- package/cjs/graphic/pyramid3d.js.map +1 -1
- package/cjs/graphic/rect.d.ts +3 -3
- package/cjs/graphic/rect.js +16 -12
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/rect3d.js +2 -2
- package/cjs/graphic/rect3d.js.map +1 -1
- package/cjs/graphic/richtext/icon.d.ts +2 -2
- package/cjs/graphic/richtext/icon.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +3 -3
- package/cjs/graphic/richtext.js +44 -12
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/shadow-root.d.ts +2 -2
- package/cjs/graphic/shadow-root.js.map +1 -1
- package/cjs/graphic/symbol.d.ts +5 -3
- package/cjs/graphic/symbol.js +25 -12
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.d.ts +10 -10
- package/cjs/graphic/text.js +26 -20
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/theme.js.map +1 -1
- package/cjs/graphic/wrap-text.d.ts +1 -1
- package/cjs/graphic/wrap-text.js +2 -2
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +3 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/graphic/arc.d.ts +2 -2
- package/cjs/interface/graphic/arc.js.map +1 -1
- package/cjs/interface/graphic/arc3d.d.ts +1 -1
- package/cjs/interface/graphic/arc3d.js.map +1 -1
- package/cjs/interface/graphic/area.d.ts +1 -0
- package/cjs/interface/graphic/area.js.map +1 -1
- package/cjs/interface/graphic/line.d.ts +1 -0
- package/cjs/interface/graphic/line.js.map +1 -1
- package/cjs/interface/graphic-service.d.ts +10 -17
- package/cjs/interface/graphic-service.js.map +1 -1
- package/cjs/interface/graphic.d.ts +2 -0
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/picker/pick-interceptor.js +5 -3
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +8 -2
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +8 -2
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/cjs/render/contributions/render/arc-render.js +15 -28
- package/cjs/render/contributions/render/arc-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +11 -6
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.d.ts +1 -1
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/index.d.ts +1 -0
- package/cjs/render/contributions/render/index.js +3 -3
- package/cjs/render/contributions/render/index.js.map +1 -1
- package/cjs/render/contributions/render/line-render.js +6 -3
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +24 -0
- package/cjs/render/contributions/render/utils.js +56 -23
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/dist/index.es.js +6920 -7087
- package/es/animate/Ticker/default-ticker.d.ts +2 -53
- package/es/animate/Ticker/default-ticker.js +3 -106
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/Ticker/index.d.ts +4 -0
- package/es/animate/Ticker/index.js +8 -0
- package/es/animate/Ticker/index.js.map +1 -1
- package/es/animate/Ticker/manual-ticker-handler.d.ts +15 -0
- package/es/animate/Ticker/manual-ticker-handler.js +28 -0
- package/es/animate/Ticker/manual-ticker-handler.js.map +1 -0
- package/es/animate/Ticker/manual-ticker.d.ts +19 -0
- package/es/animate/Ticker/manual-ticker.js +31 -0
- package/es/animate/Ticker/manual-ticker.js.map +1 -0
- package/es/animate/Ticker/raf-tick-handler.d.ts +9 -0
- package/es/animate/Ticker/raf-tick-handler.js +22 -0
- package/es/animate/Ticker/raf-tick-handler.js.map +1 -0
- package/es/animate/Ticker/timeout-tick-handler.d.ts +9 -0
- package/es/animate/Ticker/timeout-tick-handler.js +20 -0
- package/es/animate/Ticker/timeout-tick-handler.js.map +1 -0
- package/es/animate/Ticker/type.d.ts +6 -0
- package/es/animate/Ticker/type.js +7 -0
- package/es/animate/Ticker/type.js.map +1 -0
- package/es/canvas/conical-gradient.js.map +1 -1
- package/es/canvas/contributions/base-canvas.js +3 -15
- package/es/canvas/contributions/base-canvas.js.map +1 -1
- package/es/common/3d-interceptor.js +1 -2
- package/es/common/bounds-context.js +2 -1
- package/es/common/morphing-utils.js +1 -1
- package/es/common/path-svg.js +1 -1
- package/es/common/polygon.js +1 -1
- package/es/common/rect-utils.js +1 -1
- package/es/common/render-area.js +1 -1
- package/es/common/render-command-list.js +1 -2
- package/es/common/render-curve.js +1 -1
- package/es/common/render-utils.js +1 -1
- package/es/common/seg-context.js +1 -1
- package/es/common/segment/catmull-rom-close.d.ts +41 -0
- package/es/common/segment/catmull-rom-close.js +74 -0
- package/es/common/segment/catmull-rom-close.js.map +1 -0
- package/es/common/segment/catmull-rom.d.ts +38 -0
- package/es/common/segment/catmull-rom.js +92 -0
- package/es/common/segment/catmull-rom.js.map +1 -0
- package/es/common/segment/index.d.ts +5 -2
- package/es/common/segment/index.js +11 -0
- package/es/common/segment/index.js.map +1 -1
- package/es/common/simplify.js +1 -1
- package/es/common/sort.js +1 -1
- package/es/common/split-path.js +1 -1
- package/es/common/store.js +1 -1
- package/es/common/text.js +5 -4
- package/es/common/text.js.map +1 -1
- package/es/core/application.js +2 -1
- package/es/core/camera.js +1 -1
- package/es/core/constants.js +1 -1
- package/es/core/contributions/layerHandler/modules.js +2 -9
- package/es/core/contributions/layerHandler/modules.js.map +1 -1
- package/es/core/core-modules.js +1 -1
- package/es/core/global-module.js +2 -0
- package/es/core/global.js +1 -1
- package/es/core/graphic-utils.js +1 -1
- package/es/core/index.js +1 -1
- package/es/core/layer-service.js +1 -1
- package/es/core/layer.js +1 -1
- package/es/core/light.js +1 -1
- package/es/core/stage.d.ts +2 -2
- package/es/core/stage.js +9 -7
- package/es/core/stage.js.map +1 -1
- package/es/core/window.js +1 -1
- package/es/event/federated-event/base-event.js +12 -2
- package/es/event/federated-event/base-event.js.map +1 -1
- package/es/graphic/arc.d.ts +6 -4
- package/es/graphic/arc.js +47 -16
- package/es/graphic/arc.js.map +1 -1
- package/es/graphic/arc3d.d.ts +2 -2
- package/es/graphic/arc3d.js +7 -10
- package/es/graphic/arc3d.js.map +1 -1
- package/es/graphic/area.d.ts +5 -3
- package/es/graphic/area.js +28 -11
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/builtin-symbol/index.d.ts +1 -1
- package/es/graphic/builtin-symbol/thin-triangle.d.ts +2 -2
- package/es/graphic/builtin-symbol/thin-triangle.js +2 -2
- package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-down.d.ts +1 -2
- package/es/graphic/builtin-symbol/triangle-down.js +2 -7
- package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-left.d.ts +0 -1
- package/es/graphic/builtin-symbol/triangle-left.js +1 -6
- package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-right.d.ts +1 -2
- package/es/graphic/builtin-symbol/triangle-right.js +2 -7
- package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-up.d.ts +1 -2
- package/es/graphic/builtin-symbol/triangle-up.js +2 -7
- package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle.d.ts +1 -2
- package/es/graphic/builtin-symbol/triangle.js +1 -3
- package/es/graphic/builtin-symbol/triangle.js.map +1 -1
- package/es/graphic/circle.d.ts +5 -3
- package/es/graphic/circle.js +23 -9
- package/es/graphic/circle.js.map +1 -1
- package/es/graphic/config.js +6 -3
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/glyph.d.ts +4 -2
- package/es/graphic/glyph.js +9 -1
- package/es/graphic/glyph.js.map +1 -1
- package/es/graphic/graphic-creator.js.map +1 -1
- package/es/graphic/graphic-service/common-outer-boder-bounds.d.ts +3 -0
- package/es/graphic/graphic-service/common-outer-boder-bounds.js +9 -0
- package/es/graphic/graphic-service/common-outer-boder-bounds.js.map +1 -0
- package/es/graphic/graphic-service/graphic-service.d.ts +7 -36
- package/es/graphic/graphic-service/graphic-service.js +11 -297
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic-service/symbol-outer-border-bounds.d.ts +3 -0
- package/es/graphic/graphic-service/symbol-outer-border-bounds.js +11 -0
- package/es/graphic/graphic-service/symbol-outer-border-bounds.js.map +1 -0
- package/es/graphic/graphic.d.ts +12 -9
- package/es/graphic/graphic.js +20 -3
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.d.ts +7 -3
- package/es/graphic/group.js +32 -22
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/image.d.ts +3 -2
- package/es/graphic/image.js +15 -8
- package/es/graphic/image.js.map +1 -1
- package/es/graphic/line.d.ts +5 -3
- package/es/graphic/line.js +25 -10
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/node-tree.js.map +1 -1
- package/es/graphic/path.d.ts +3 -3
- package/es/graphic/path.js +18 -12
- package/es/graphic/path.js.map +1 -1
- package/es/graphic/polygon.d.ts +4 -3
- package/es/graphic/polygon.js +17 -10
- package/es/graphic/polygon.js.map +1 -1
- package/es/graphic/pyramid3d.d.ts +2 -2
- package/es/graphic/pyramid3d.js +8 -10
- package/es/graphic/pyramid3d.js.map +1 -1
- package/es/graphic/rect.d.ts +3 -3
- package/es/graphic/rect.js +16 -10
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/rect3d.js +1 -3
- package/es/graphic/rect3d.js.map +1 -1
- package/es/graphic/richtext/icon.d.ts +2 -2
- package/es/graphic/richtext/icon.js.map +1 -1
- package/es/graphic/richtext.d.ts +3 -3
- package/es/graphic/richtext.js +43 -11
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/shadow-root.d.ts +2 -2
- package/es/graphic/shadow-root.js.map +1 -1
- package/es/graphic/symbol.d.ts +5 -3
- package/es/graphic/symbol.js +26 -11
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.d.ts +10 -10
- package/es/graphic/text.js +27 -22
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/theme.js.map +1 -1
- package/es/graphic/wrap-text.d.ts +1 -1
- package/es/graphic/wrap-text.js +1 -3
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +4 -0
- package/es/index.js.map +1 -1
- package/es/interface/graphic/arc.d.ts +2 -2
- package/es/interface/graphic/arc.js.map +1 -1
- package/es/interface/graphic/arc3d.d.ts +1 -1
- package/es/interface/graphic/arc3d.js.map +1 -1
- package/es/interface/graphic/area.d.ts +1 -0
- package/es/interface/graphic/area.js.map +1 -1
- package/es/interface/graphic/line.d.ts +1 -0
- package/es/interface/graphic/line.js.map +1 -1
- package/es/interface/graphic-service.d.ts +10 -17
- package/es/interface/graphic-service.js.map +1 -1
- package/es/interface/graphic.d.ts +2 -0
- package/es/interface/graphic.js.map +1 -1
- package/es/picker/pick-interceptor.js +6 -2
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/plugins/builtin-plugin/3dview-transform-plugin.d.ts +1 -0
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js +6 -0
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +1 -0
- package/es/plugins/builtin-plugin/flex-layout-plugin.js +6 -0
- package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/es/render/contributions/render/arc-render.js +10 -16
- package/es/render/contributions/render/arc-render.js.map +1 -1
- package/es/render/contributions/render/area-render.js +11 -5
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.d.ts +1 -1
- package/es/render/contributions/render/base-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.js +6 -3
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +24 -0
- package/es/render/contributions/render/utils.js +46 -15
- package/es/render/contributions/render/utils.js.map +1 -1
- package/package.json +4 -4
- package/cjs/graphic/graphic-service/common-contribution.d.ts +0 -5
- package/cjs/graphic/graphic-service/common-contribution.js +0 -19
- package/cjs/graphic/graphic-service/common-contribution.js.map +0 -1
- package/cjs/graphic/graphic-service/symbol-contribution.d.ts +0 -6
- package/cjs/graphic/graphic-service/symbol-contribution.js +0 -21
- package/cjs/graphic/graphic-service/symbol-contribution.js.map +0 -1
- package/es/graphic/graphic-service/common-contribution.d.ts +0 -5
- package/es/graphic/graphic-service/common-contribution.js +0 -11
- package/es/graphic/graphic-service/common-contribution.js.map +0 -1
- package/es/graphic/graphic-service/symbol-contribution.d.ts +0 -6
- package/es/graphic/graphic-service/symbol-contribution.js +0 -15
- package/es/graphic/graphic-service/symbol-contribution.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/canvas/conical-gradient.ts"],"names":[],"mappings":"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","file":"conical-gradient.js","sourcesContent":["/**\n * 环形渐变部分源码借鉴https://github.com/parksben/create-conical-gradient/blob/master/LICENSE\n * MIT License\n\n * Copyright (c) 2020 parksben\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { pi2, LRU } from '@visactor/vutils';\nimport { application } from '../application';\nimport type { IConicalGradient, IContext2d } from '../interface';\nimport { interpolateColor } from '../color-string';\n\nclass ConicalCanvas {\n static canvas: HTMLCanvasElement;\n static ctx: CanvasRenderingContext2D | null;\n\n static GetCanvas() {\n try {\n if (!ConicalCanvas.canvas) {\n ConicalCanvas.canvas = application.global.createCanvas({});\n }\n return ConicalCanvas.canvas;\n } catch (err) {\n return null;\n }\n }\n\n static GetCtx() {\n if (!ConicalCanvas.ctx) {\n const conicalCanvas = ConicalCanvas.GetCanvas();\n ConicalCanvas.ctx = conicalCanvas.getContext('2d');\n }\n return ConicalCanvas.ctx;\n }\n}\n\n// todo 目前环形渐变缓存还是依赖于x和y,后续优化环形渐变\nexport class ColorInterpolate extends LRU {\n private readonly rgbaSet: Uint8ClampedArray;\n private cacheParams: {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n } = { CLEAN_THRESHOLD: 100, L_TIME: 1e3 };\n static _instance: ColorInterpolate;\n\n static getInstance() {\n if (!ColorInterpolate._instance) {\n ColorInterpolate._instance = new ColorInterpolate();\n }\n return ColorInterpolate._instance;\n }\n\n constructor(stops: [number, string][] = [], precision = 100) {\n super();\n const canvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n canvas.width = precision;\n canvas.height = 1;\n if (!conicalCtx) {\n return;\n }\n conicalCtx.translate(0, 0);\n if (!conicalCtx) {\n throw new Error('获取ctx发生错误');\n }\n\n const gradient = conicalCtx.createLinearGradient(0, 0, precision, 0);\n stops.forEach(stop => {\n gradient.addColorStop(stop[0], stop[1]);\n });\n\n conicalCtx.fillStyle = gradient;\n conicalCtx.fillRect(0, 0, precision, 1);\n\n this.rgbaSet = conicalCtx.getImageData(0, 0, precision, 1).data;\n }\n\n getColor(offset: number): string {\n const rgba = this.rgbaSet.slice(4 * offset, 4 * offset + 4);\n return `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${rgba[3] / 255})`;\n }\n\n dataMap: Map<string, { data: ColorInterpolate; timestamp: number[] }> = new Map();\n // static lastCache: {\n // stops: [number, string][],\n // precision: number,\n // colorInter: ColorInterpolate,\n // step: number,\n // stepNum: number,\n // r: number,\n // lineWidth: number,\n // } | null = null;\n\n GetOrCreate(x: number, y: number, w: number, h: number, stops: [number, string][] = [], precision = 100) {\n let str = `${x}${y}${w}${h}`;\n stops.forEach(item => (str += item.join()));\n str += precision;\n let colorInter = this.dataMap.get(str);\n if (!colorInter) {\n const data = new ColorInterpolate(stops, precision);\n colorInter = { data, timestamp: [] };\n this.addLimitedTimestamp(colorInter, Date.now(), {});\n this.dataMap.set(str, colorInter);\n }\n this.clearCache(this.dataMap, this.cacheParams);\n return colorInter.data;\n }\n}\n\nclass ConicalPatternStore {\n private static cache: {\n [key: string]: {\n width: number;\n height: number;\n pattern: CanvasPattern;\n }[];\n } = {};\n private static ImageSize = [20, 40, 80, 160, 320, 640, 1280, 2560];\n\n static GetSize(minSize: number): number {\n for (let i = 0; i < ConicalPatternStore.ImageSize.length; i++) {\n if (ConicalPatternStore.ImageSize[i] >= minSize) {\n return ConicalPatternStore.ImageSize[i];\n }\n }\n return minSize;\n }\n\n static Get(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n w: number,\n h: number\n ): CanvasPattern | null {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n const data = ConicalPatternStore.cache[key];\n if (!data || data.length === 0) {\n return null;\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i].width >= w && data[i].height >= h) {\n return data[i].pattern;\n }\n }\n return null;\n }\n\n static Set(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n pattern: CanvasPattern,\n w: number,\n h: number\n ) {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n // 必然是顺序的,因为如果能get到的话就不需要set\n if (!ConicalPatternStore.cache[key]) {\n ConicalPatternStore.cache[key] = [\n {\n width: w,\n height: h,\n pattern\n }\n ];\n } else {\n ConicalPatternStore.cache[key].push({\n width: w,\n height: h,\n pattern\n });\n }\n }\n\n static GenKey(stops: Array<[number, string]>, x: number, y: number, startAngle: number, endAngle: number): string {\n return `${x},${y},${startAngle},${endAngle},${stops.join()}`;\n }\n}\n\nexport function getConicGradientAt(x: number, y: number, angle: number, color: IConicalGradient) {\n const { stops, startAngle, endAngle } = color;\n\n while (angle < 0) {\n angle += pi2;\n }\n while (angle > pi2) {\n angle -= pi2;\n }\n\n if (angle < startAngle) {\n return stops[0].color;\n }\n if (angle > endAngle) {\n return stops[0].color;\n }\n let percent = (angle - startAngle) / (endAngle - startAngle);\n let startStop: any;\n let endStop: any;\n for (let i = 0; i < stops.length; i++) {\n if (stops[i].offset >= percent) {\n startStop = stops[i - 1];\n endStop = stops[i];\n break;\n }\n }\n percent = (percent - startStop.offset) / (endStop.offset - startStop.offset);\n return interpolateColor(startStop.color, endStop.color, percent, false);\n}\n\n/**\n * 环形渐变效果\n * @param context\n * @param stops\n * @param x\n * @param y\n * @param deltaAngle 用于细分出颜色插值数组[start,,,,,,end, (没有用到的颜色)]\n * @param startAngle 实际开始的angle\n * @param endAngle 实际结束的angle\n * @param minW\n * @param minH\n * @returns\n */\nexport function createConicalGradient(\n context: IContext2d,\n stops: Array<[number, string]>,\n x: number,\n y: number,\n deltaAngle: number,\n startAngle: number,\n endAngle: number,\n minW: number,\n minH: number\n): null | CanvasPattern {\n const deltaDeg = Math.floor((deltaAngle * 180) / Math.PI);\n\n const conicalCanvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n\n if (!conicalCtx) {\n return null;\n }\n const width = ConicalPatternStore.GetSize(minW);\n const height = ConicalPatternStore.GetSize(minH);\n let pattern = ConicalPatternStore.Get(stops, x, y, startAngle, endAngle, width, height);\n if (pattern) {\n return pattern;\n }\n\n const r = Math.sqrt(\n Math.max(\n Math.max(Math.pow(x, 2) + Math.pow(y, 2), Math.pow(width - x, 2) + Math.pow(y, 2)),\n Math.max(Math.pow(width - x, 2) + Math.pow(height - y, 2), Math.pow(x, 2) + Math.pow(height - y, 2))\n )\n );\n // 每一度一个三角形\n const stepNum = deltaDeg + 1;\n const step = deltaAngle / Math.max(1, stepNum - 1);\n const colorInter = ColorInterpolate.getInstance().GetOrCreate(x, y, width, height, stops, stepNum);\n\n const lineWidth = (2 * Math.PI * r) / 360;\n\n conicalCanvas.width = width;\n conicalCanvas.height = height;\n conicalCtx.setTransform(1, 0, 0, 1, 0, 0);\n conicalCtx.clearRect(0, 0, width, height);\n conicalCtx.translate(x, y);\n conicalCtx.rotate(startAngle);\n for (let i = 0, len = stepNum - 1; i < len; i++) {\n if (startAngle + i * step > endAngle) {\n break;\n }\n const color = colorInter.getColor(i);\n conicalCtx.beginPath();\n conicalCtx.rotate(step);\n conicalCtx.moveTo(0, 0);\n conicalCtx.lineTo(r, -2 * lineWidth);\n conicalCtx.lineTo(r, 0);\n conicalCtx.fillStyle = color;\n conicalCtx.closePath();\n conicalCtx.fill();\n }\n\n const imageData = conicalCtx.getImageData(0, 0, width, height);\n\n conicalCanvas.width = imageData.width;\n conicalCanvas.height = imageData.height;\n conicalCtx.putImageData(imageData, 0, 0);\n pattern = context.createPattern(conicalCanvas, 'no-repeat');\n pattern && ConicalPatternStore.Set(stops, x, y, startAngle, endAngle, pattern, width, height);\n return pattern;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/canvas/conical-gradient.ts"],"names":[],"mappings":"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","file":"conical-gradient.js","sourcesContent":["/**\n * 环形渐变部分源码借鉴https://github.com/parksben/create-conical-gradient/blob/master/LICENSE\n * MIT License\n\n * Copyright (c) 2020 parksben\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { pi2, LRU } from '@visactor/vutils';\nimport { application } from '../application';\nimport type { IConicalGradient, IContext2d } from '../interface';\nimport { interpolateColor } from '../color-string';\n\nclass ConicalCanvas {\n static canvas: HTMLCanvasElement;\n static ctx: CanvasRenderingContext2D | null;\n\n static GetCanvas() {\n try {\n if (!ConicalCanvas.canvas) {\n ConicalCanvas.canvas = application.global.createCanvas({});\n }\n return ConicalCanvas.canvas;\n } catch (err) {\n return null;\n }\n }\n\n static GetCtx() {\n if (!ConicalCanvas.ctx) {\n const conicalCanvas = ConicalCanvas.GetCanvas();\n ConicalCanvas.ctx = conicalCanvas.getContext('2d');\n }\n return ConicalCanvas.ctx;\n }\n}\n\n// todo 目前环形渐变缓存还是依赖于x和y,后续优化环形渐变\nexport class ColorInterpolate extends LRU {\n private readonly rgbaSet: Uint8ClampedArray;\n private cacheParams: {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n } = { CLEAN_THRESHOLD: 100, L_TIME: 1e3 };\n static _instance: ColorInterpolate;\n\n static getInstance() {\n if (!ColorInterpolate._instance) {\n ColorInterpolate._instance = new ColorInterpolate();\n }\n return ColorInterpolate._instance;\n }\n\n constructor(stops: [number, string][] = [], precision = 100) {\n super();\n const canvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n canvas.width = precision;\n canvas.height = 1;\n if (!conicalCtx) {\n return;\n }\n conicalCtx.translate(0, 0);\n if (!conicalCtx) {\n throw new Error('获取ctx发生错误');\n }\n\n const gradient = conicalCtx.createLinearGradient(0, 0, precision, 0);\n stops.forEach(stop => {\n gradient.addColorStop(stop[0], stop[1]);\n });\n\n conicalCtx.fillStyle = gradient;\n conicalCtx.fillRect(0, 0, precision, 1);\n\n this.rgbaSet = conicalCtx.getImageData(0, 0, precision, 1).data;\n }\n\n getColor(offset: number): string {\n const rgba = this.rgbaSet.slice(4 * offset, 4 * offset + 4);\n return `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${rgba[3] / 255})`;\n }\n\n dataMap: Map<string, { data: ColorInterpolate; timestamp: number[] }> = new Map();\n // static lastCache: {\n // stops: [number, string][],\n // precision: number,\n // colorInter: ColorInterpolate,\n // step: number,\n // stepNum: number,\n // r: number,\n // lineWidth: number,\n // } | null = null;\n\n GetOrCreate(x: number, y: number, w: number, h: number, stops: [number, string][] = [], precision = 100) {\n let str = `${x}${y}${w}${h}`;\n stops.forEach(item => (str += item.join()));\n str += precision;\n let colorInter = this.dataMap.get(str);\n if (!colorInter) {\n const data = new ColorInterpolate(stops, precision);\n colorInter = { data, timestamp: [] };\n this.addLimitedTimestamp(colorInter, Date.now(), {});\n this.dataMap.set(str, colorInter);\n }\n this.clearCache(this.dataMap, this.cacheParams);\n return colorInter.data;\n }\n}\n\nclass ConicalPatternStore {\n private static cache: {\n [key: string]: {\n width: number;\n height: number;\n pattern: CanvasPattern;\n }[];\n } = {};\n private static ImageSize = [20, 40, 80, 160, 320, 640, 1280, 2560];\n\n static GetSize(minSize: number): number {\n for (let i = 0; i < ConicalPatternStore.ImageSize.length; i++) {\n if (ConicalPatternStore.ImageSize[i] >= minSize) {\n return ConicalPatternStore.ImageSize[i];\n }\n }\n return minSize;\n }\n\n static Get(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n w: number,\n h: number\n ): CanvasPattern | null {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n const data = ConicalPatternStore.cache[key];\n if (!data || data.length === 0) {\n return null;\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i].width >= w && data[i].height >= h) {\n return data[i].pattern;\n }\n }\n return null;\n }\n\n static Set(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n pattern: CanvasPattern,\n w: number,\n h: number\n ) {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n // 必然是顺序的,因为如果能get到的话就不需要set\n if (!ConicalPatternStore.cache[key]) {\n ConicalPatternStore.cache[key] = [\n {\n width: w,\n height: h,\n pattern\n }\n ];\n } else {\n ConicalPatternStore.cache[key].push({\n width: w,\n height: h,\n pattern\n });\n }\n }\n\n static GenKey(stops: Array<[number, string]>, x: number, y: number, startAngle: number, endAngle: number): string {\n return `${x},${y},${startAngle},${endAngle},${stops.join()}`;\n }\n}\n\nexport function getConicGradientAt(x: number, y: number, angle: number, color: IConicalGradient) {\n const { stops, startAngle, endAngle } = color;\n\n // TODO 格式化angle\n while (angle < 0) {\n angle += pi2;\n }\n while (angle > pi2) {\n angle -= pi2;\n }\n\n if (angle < startAngle) {\n return stops[0].color;\n }\n if (angle > endAngle) {\n return stops[0].color;\n }\n let percent = (angle - startAngle) / (endAngle - startAngle);\n let startStop: any;\n let endStop: any;\n for (let i = 0; i < stops.length; i++) {\n if (stops[i].offset >= percent) {\n startStop = stops[i - 1];\n endStop = stops[i];\n break;\n }\n }\n percent = (percent - startStop.offset) / (endStop.offset - startStop.offset);\n return interpolateColor(startStop.color, endStop.color, percent, false);\n}\n\n/**\n * 环形渐变效果\n * @param context\n * @param stops\n * @param x\n * @param y\n * @param deltaAngle 用于细分出颜色插值数组[start,,,,,,end, (没有用到的颜色)]\n * @param startAngle 实际开始的angle\n * @param endAngle 实际结束的angle\n * @param minW\n * @param minH\n * @returns\n */\nexport function createConicalGradient(\n context: IContext2d,\n stops: Array<[number, string]>,\n x: number,\n y: number,\n deltaAngle: number,\n startAngle: number,\n endAngle: number,\n minW: number,\n minH: number\n): null | CanvasPattern {\n const deltaDeg = Math.floor((deltaAngle * 180) / Math.PI);\n\n const conicalCanvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n\n if (!conicalCtx) {\n return null;\n }\n const width = ConicalPatternStore.GetSize(minW);\n const height = ConicalPatternStore.GetSize(minH);\n let pattern = ConicalPatternStore.Get(stops, x, y, startAngle, endAngle, width, height);\n if (pattern) {\n return pattern;\n }\n\n const r = Math.sqrt(\n Math.max(\n Math.max(Math.pow(x, 2) + Math.pow(y, 2), Math.pow(width - x, 2) + Math.pow(y, 2)),\n Math.max(Math.pow(width - x, 2) + Math.pow(height - y, 2), Math.pow(x, 2) + Math.pow(height - y, 2))\n )\n );\n // 每一度一个三角形\n const stepNum = deltaDeg + 1;\n const step = deltaAngle / Math.max(1, stepNum - 1);\n const colorInter = ColorInterpolate.getInstance().GetOrCreate(x, y, width, height, stops, stepNum);\n\n const lineWidth = (2 * Math.PI * r) / 360;\n\n conicalCanvas.width = width;\n conicalCanvas.height = height;\n conicalCtx.setTransform(1, 0, 0, 1, 0, 0);\n conicalCtx.clearRect(0, 0, width, height);\n conicalCtx.translate(x, y);\n conicalCtx.rotate(startAngle);\n for (let i = 0, len = stepNum - 1; i < len; i++) {\n if (startAngle + i * step > endAngle) {\n break;\n }\n const color = colorInter.getColor(i);\n conicalCtx.beginPath();\n conicalCtx.rotate(step);\n conicalCtx.moveTo(0, 0);\n conicalCtx.lineTo(r, -2 * lineWidth);\n conicalCtx.lineTo(r, 0);\n conicalCtx.fillStyle = color;\n conicalCtx.closePath();\n conicalCtx.fill();\n }\n\n const imageData = conicalCtx.getImageData(0, 0, width, height);\n\n conicalCanvas.width = imageData.width;\n conicalCanvas.height = imageData.height;\n conicalCtx.putImageData(imageData, 0, 0);\n pattern = context.createPattern(conicalCanvas, 'no-repeat');\n pattern && ConicalPatternStore.Set(stops, x, y, startAngle, endAngle, pattern, width, height);\n return pattern;\n}\n"]}
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
|
|
4
|
-
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
|
|
5
|
-
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
}, __metadata = this && this.__metadata || function(k, v) {
|
|
8
|
-
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
|
|
11
3
|
Object.defineProperty(exports, "__esModule", {
|
|
12
4
|
value: !0
|
|
13
5
|
}), exports.BaseCanvas = void 0;
|
|
14
6
|
|
|
15
|
-
const
|
|
7
|
+
const DefaultConfig = {
|
|
16
8
|
WIDTH: 500,
|
|
17
9
|
HEIGHT: 500,
|
|
18
10
|
DPR: 1
|
|
19
11
|
};
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
class BaseCanvas {
|
|
22
14
|
get displayWidth() {
|
|
23
15
|
return this._pixelWidth / this._dpr;
|
|
24
16
|
}
|
|
@@ -102,8 +94,7 @@ let BaseCanvas = class {
|
|
|
102
94
|
release(...params) {
|
|
103
95
|
this.controled && this._nativeCanvas.parentElement && this._nativeCanvas.parentElement.removeChild(this._nativeCanvas);
|
|
104
96
|
}
|
|
105
|
-
}
|
|
97
|
+
}
|
|
106
98
|
|
|
107
|
-
BaseCanvas
|
|
108
|
-
exports.BaseCanvas = BaseCanvas;
|
|
99
|
+
exports.BaseCanvas = BaseCanvas, BaseCanvas.env = "browser";
|
|
109
100
|
//# sourceMappingURL=base-canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/canvas/contributions/base-canvas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/canvas/contributions/base-canvas.ts"],"names":[],"mappings":"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","file":"base-canvas.js","sourcesContent":["import type { CanvasConfigType, ICanvas, IContext2d, EnvType } from '../../interface';\n\nconst DefaultConfig = {\n WIDTH: 500,\n HEIGHT: 500,\n DPR: 1\n};\n\nexport abstract class BaseCanvas implements ICanvas {\n static env: EnvType = 'browser';\n // 显示的宽高,如果是离屏canvas,就是pixelWidth / pixelRatio\n protected _displayWidth: number; // 显示的宽度\n protected _displayHeight: number; // 显示的高度\n protected _id: number | string;\n // 像素宽高\n protected _pixelWidth: number; // 像素宽度\n protected _pixelHeight: number; // 像素高度\n\n protected _x: number;\n protected _y: number;\n protected _dpr: number;\n\n protected _container?: HTMLElement | null;\n protected _nativeCanvas: HTMLCanvasElement;\n protected _context: IContext2d;\n protected _visiable: boolean;\n protected controled: boolean;\n\n get displayWidth(): number {\n return this._pixelWidth / this._dpr;\n }\n\n get displayHeight(): number {\n return this._pixelHeight / this._dpr;\n }\n /**\n * TODO\n * get\\set 方法看看是否可以删掉\n */\n get id(): number | string {\n return this._id;\n }\n get x(): number {\n return this._x;\n }\n set x(_x: number) {\n this._x = _x;\n }\n get y(): number {\n return this._y;\n }\n set y(_y: number) {\n this._y = _y;\n }\n get nativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n\n get width(): number {\n return this._pixelWidth;\n }\n set width(width: number) {\n this._pixelWidth = width;\n this._displayWidth = width / (this._dpr || 1);\n }\n\n get height(): number {\n return this._pixelHeight;\n }\n set height(height: number) {\n this._pixelHeight = height;\n this._displayHeight = height / (this._dpr || 1);\n }\n getContext(str?: string): IContext2d {\n return this._context;\n }\n\n get visiable(): boolean {\n return this._visiable;\n }\n set visiable(visiable: boolean) {\n this._visiable = visiable;\n visiable ? this.show() : this.hide();\n }\n\n get dpr(): number {\n return this._dpr;\n }\n set dpr(dpr: number) {\n // this._lastPixelRatio = this._pixelRatio;\n this._dpr = dpr;\n this.resize(this._displayWidth, this._displayHeight);\n }\n\n /**\n * 通过canvas生成一个wrap对象,初始化时不会再设置canvas的属性\n * @param params\n */\n constructor(params: CanvasConfigType) {\n const {\n nativeCanvas,\n width = DefaultConfig.WIDTH,\n height = DefaultConfig.HEIGHT,\n dpr = DefaultConfig.DPR,\n x,\n y,\n id,\n canvasControled = true\n } = params;\n const offsetX = 0;\n const offsetY = 0;\n this._x = x ?? offsetX;\n this._y = y ?? offsetY;\n this._pixelWidth = width * dpr;\n this._pixelHeight = height * dpr;\n this._visiable = params.visiable !== false;\n this.controled = canvasControled;\n\n // 离屏canvas\n this._displayWidth = width;\n this._displayHeight = height;\n this._dpr = dpr;\n this._nativeCanvas = nativeCanvas;\n this._id = nativeCanvas.id ?? id;\n if (id) {\n nativeCanvas.id = id;\n }\n\n this.init(params);\n }\n\n getNativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n hide() {\n return;\n }\n show() {\n return;\n }\n\n abstract init(params: CanvasConfigType): void;\n\n applyPosition(): void {\n return;\n }\n\n resetStyle(params: Partial<CanvasConfigType>): void {\n return;\n }\n\n /**\n * 设置canvas的size大小,设置context的scale\n * @param width\n * @param height\n */\n resize(width: number, height: number): void {\n return;\n }\n\n toDataURL(): string;\n toDataURL(mimeType: 'image/png'): string;\n toDataURL(mimeType: 'image/jpeg', quality: number): string;\n toDataURL(mimeType?: string, quality?: number) {\n return '';\n }\n\n readPixels(x: number, y: number, w: number, h: number): ImageData | Promise<ImageData> {\n return this._context.getImageData(x, y, w, h);\n }\n\n convertToBlob(options?: { type?: string | undefined; quality?: number | undefined } | undefined): Promise<Blob> {\n throw new Error('暂未实现');\n }\n\n transferToImageBitmap(): ImageBitmap {\n throw new Error('暂未实现');\n }\n\n release(...params: any): void {\n if (this.controled) {\n this._nativeCanvas.parentElement && this._nativeCanvas.parentElement.removeChild(this._nativeCanvas);\n }\n }\n}\n"]}
|
|
@@ -292,4 +292,4 @@ function bezierCurversToPath(bezierCurves) {
|
|
|
292
292
|
|
|
293
293
|
exports.pathToBezierCurves = pathToBezierCurves, exports.applyTransformOnBezierCurves = applyTransformOnBezierCurves,
|
|
294
294
|
exports.bezierCurversToPath = bezierCurversToPath;
|
|
295
|
-
//# sourceMappingURL=morphing-utils.js.map
|
|
295
|
+
//# sourceMappingURL=morphing-utils.js.map
|
package/cjs/common/path-svg.js
CHANGED
package/cjs/common/polygon.js
CHANGED
|
@@ -39,8 +39,8 @@ function getProportionPoint(point, segment, length, dx, dy) {
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
//# sourceMappingURL=polygon.js.map
|
|
42
43
|
Object.defineProperty(exports, "__esModule", {
|
|
43
44
|
value: !0
|
|
44
45
|
}), exports.drawRoundedPolygon = exports.drawPolygon = void 0, exports.drawPolygon = drawPolygon,
|
|
45
|
-
exports.drawRoundedPolygon = drawRoundedPolygon;
|
|
46
|
-
//# sourceMappingURL=polygon.js.map
|
|
46
|
+
exports.drawRoundedPolygon = drawRoundedPolygon;
|
package/cjs/common/rect-utils.js
CHANGED
|
@@ -99,4 +99,4 @@ function drawIncrementalAreaSegments(path, lastSeg, segments, params) {
|
|
|
99
99
|
|
|
100
100
|
exports.drawSegments = drawSegments, exports.drawIncrementalSegments = drawIncrementalSegments,
|
|
101
101
|
exports.drawIncrementalAreaSegments = drawIncrementalAreaSegments;
|
|
102
|
-
//# sourceMappingURL=render-curve.js.map
|
|
102
|
+
//# sourceMappingURL=render-curve.js.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type IPointLike } from '@visactor/vutils';
|
|
2
|
+
import type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';
|
|
3
|
+
export declare class CatmullRomClosed implements ICurvedSegment {
|
|
4
|
+
private _lastDefined1?;
|
|
5
|
+
private _lastDefined2?;
|
|
6
|
+
context: ISegPath2D;
|
|
7
|
+
protected startPoint?: IPointLike;
|
|
8
|
+
lastPoint0?: IPointLike;
|
|
9
|
+
lastPoint1?: IPointLike;
|
|
10
|
+
constructor(context: ISegPath2D, alpha?: number, startPoint?: IPointLike);
|
|
11
|
+
_alpha: number;
|
|
12
|
+
_x: number;
|
|
13
|
+
_y: number;
|
|
14
|
+
_x0: number;
|
|
15
|
+
_x1: number;
|
|
16
|
+
_y0: number;
|
|
17
|
+
_y1: number;
|
|
18
|
+
_x2: number;
|
|
19
|
+
_y2: number;
|
|
20
|
+
_x3: number;
|
|
21
|
+
_y3: number;
|
|
22
|
+
_x4: number;
|
|
23
|
+
_y4: number;
|
|
24
|
+
_x5: number;
|
|
25
|
+
_y5: number;
|
|
26
|
+
_line: number;
|
|
27
|
+
_point: number;
|
|
28
|
+
_l01_a: number;
|
|
29
|
+
_l12_a: number;
|
|
30
|
+
_l23_a: number;
|
|
31
|
+
_l01_2a: number;
|
|
32
|
+
_l12_2a: number;
|
|
33
|
+
_l23_2a: number;
|
|
34
|
+
areaStart(): void;
|
|
35
|
+
areaEnd(): void;
|
|
36
|
+
lineStart(): void;
|
|
37
|
+
lineEnd(): void;
|
|
38
|
+
point(p: IPointLike): void;
|
|
39
|
+
tryUpdateLength(): number;
|
|
40
|
+
}
|
|
41
|
+
export declare const genCatmullRomClosedSegments: (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.genCatmullRomClosedSegments = exports.CatmullRomClosed = void 0;
|
|
6
|
+
|
|
7
|
+
const catmull_rom_1 = require("./catmull-rom");
|
|
8
|
+
|
|
9
|
+
class CatmullRomClosed {
|
|
10
|
+
constructor(context, alpha = .5, startPoint) {
|
|
11
|
+
this.context = context, this.startPoint = startPoint, this._alpha = alpha;
|
|
12
|
+
}
|
|
13
|
+
areaStart() {
|
|
14
|
+
this._line = 0;
|
|
15
|
+
}
|
|
16
|
+
areaEnd() {
|
|
17
|
+
this._line = NaN;
|
|
18
|
+
}
|
|
19
|
+
lineStart() {
|
|
20
|
+
this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN,
|
|
21
|
+
this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;
|
|
22
|
+
}
|
|
23
|
+
lineEnd() {
|
|
24
|
+
switch (this._point) {
|
|
25
|
+
case 1:
|
|
26
|
+
this.context.moveTo(this._x3, this._y3, this.lastPoint1), this.context.closePath();
|
|
27
|
+
break;
|
|
28
|
+
|
|
29
|
+
case 2:
|
|
30
|
+
this.context.lineTo(this._x3, this._y3, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1),
|
|
31
|
+
this.context.closePath();
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case 3:
|
|
35
|
+
this.point({
|
|
36
|
+
x: this._x3,
|
|
37
|
+
y: this._y3
|
|
38
|
+
}), this.point({
|
|
39
|
+
x: this._x4,
|
|
40
|
+
y: this._y4
|
|
41
|
+
}), this.point({
|
|
42
|
+
x: this._x5,
|
|
43
|
+
y: this._y5
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
point(p) {
|
|
48
|
+
const {x: x, y: y} = p;
|
|
49
|
+
if (this._point) {
|
|
50
|
+
const x23 = this._x2 - x, y23 = this._y2 - y;
|
|
51
|
+
this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
|
|
52
|
+
}
|
|
53
|
+
switch (this._point) {
|
|
54
|
+
case 0:
|
|
55
|
+
this._point = 1, this._x3 = x, this._y3 = y;
|
|
56
|
+
break;
|
|
57
|
+
|
|
58
|
+
case 1:
|
|
59
|
+
this._point = 2, this.context.moveTo(this._x4 = x, this._y4 = y, p);
|
|
60
|
+
break;
|
|
61
|
+
|
|
62
|
+
case 2:
|
|
63
|
+
this._point = 3, this._x5 = x, this._y5 = y;
|
|
64
|
+
break;
|
|
65
|
+
|
|
66
|
+
default:
|
|
67
|
+
(0, catmull_rom_1.point)(this, x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, p);
|
|
68
|
+
}
|
|
69
|
+
this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a,
|
|
70
|
+
this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = x,
|
|
71
|
+
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y, this._lastDefined1 = this._lastDefined2,
|
|
72
|
+
this._lastDefined2 = p.defined, this.lastPoint0 = this.lastPoint1, this.lastPoint1 = p;
|
|
73
|
+
}
|
|
74
|
+
tryUpdateLength() {
|
|
75
|
+
return this.context.tryUpdateLength();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
exports.CatmullRomClosed = CatmullRomClosed, exports.genCatmullRomClosedSegments = (0,
|
|
80
|
+
catmull_rom_1.commonGenCatmullRomSegments)("catmullRomClosed", CatmullRomClosed);
|
|
81
|
+
//# sourceMappingURL=catmull-rom-close.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/catmull-rom-close.ts"],"names":[],"mappings":"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","file":"catmull-rom-close.js","sourcesContent":["import { epsilon, type IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport { commonGenCatmullRomSegments, point } from './catmull-rom';\n\nexport class CatmullRomClosed implements ICurvedSegment {\n private _lastDefined1?: boolean;\n private _lastDefined2?: boolean;\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, alpha: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n this._alpha = alpha;\n }\n _alpha: number;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _x2: number;\n _y2: number;\n _x3: number;\n _y3: number;\n _x4: number;\n _y4: number;\n _x5: number;\n _y5: number;\n _line: number;\n _point: number;\n _l01_a: number;\n _l12_a: number;\n _l23_a: number;\n _l01_2a: number;\n _l12_2a: number;\n _l23_2a: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 =\n this._x1 =\n this._x2 =\n this._x3 =\n this._x4 =\n this._x5 =\n this._y0 =\n this._y1 =\n this._y2 =\n this._y3 =\n this._y4 =\n this._y5 =\n NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n }\n lineEnd() {\n switch (this._point) {\n case 1: {\n this.context.moveTo(this._x3, this._y3, this.lastPoint1);\n this.context.closePath();\n break;\n }\n case 2: {\n this.context.lineTo(\n this._x3,\n this._y3,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n this.context.closePath();\n break;\n }\n case 3: {\n this.point({ x: this._x3, y: this._y3 });\n this.point({ x: this._x4, y: this._y4 });\n this.point({ x: this._x5, y: this._y5 });\n break;\n }\n }\n }\n point(p: IPointLike): void {\n const { x, y } = p;\n\n if (this._point) {\n const x23 = this._x2 - x;\n const y23 = this._y2 - y;\n this._l23_a = Math.sqrt((this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n (this._x3 = x), (this._y3 = y);\n break;\n case 1:\n this._point = 2;\n this.context.moveTo((this._x4 = x), (this._y4 = y), p);\n break;\n case 2:\n this._point = 3;\n (this._x5 = x), (this._y5 = y);\n break;\n default:\n point(this as any, x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p);\n break;\n }\n\n (this._l01_a = this._l12_a), (this._l12_a = this._l23_a);\n (this._l01_2a = this._l12_2a), (this._l12_2a = this._l23_2a);\n (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = x);\n (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = y);\n\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\n// export function genCatmullRomClosedTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n// return genCurveSegments(path, points, 2);\n// }\n\nexport const genCatmullRomClosedSegments = commonGenCatmullRomSegments('catmullRomClosed', CatmullRomClosed);\n\n// export function genCatmullRomClosedSegments(\n// points: IPointLike[],\n// alpha: number,\n// params: IGenSegmentParams = {}\n// ): 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\n// const segContext = genSegContext('catmullRom', direction, points);\n\n// const gatmullRom = new CatmullRomClosed(segContext, alpha, startPoint);\n\n// genCatmullRomClosedTypeSegments(gatmullRom, points);\n\n// return segContext;\n// }\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type IPointLike } from '@visactor/vutils';
|
|
2
|
+
import type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';
|
|
3
|
+
import type { ICurveType } from '../../interface';
|
|
4
|
+
export declare function point(curveClass: CatmullRom, x: number, y: number, defined: boolean, p: IPointLike): void;
|
|
5
|
+
export declare class CatmullRom implements ICurvedSegment {
|
|
6
|
+
private _lastDefined1?;
|
|
7
|
+
private _lastDefined2?;
|
|
8
|
+
context: ISegPath2D;
|
|
9
|
+
protected startPoint?: IPointLike;
|
|
10
|
+
lastPoint0?: IPointLike;
|
|
11
|
+
lastPoint1?: IPointLike;
|
|
12
|
+
constructor(context: ISegPath2D, alpha?: number, startPoint?: IPointLike);
|
|
13
|
+
_alpha: number;
|
|
14
|
+
_x: number;
|
|
15
|
+
_y: number;
|
|
16
|
+
_x0: number;
|
|
17
|
+
_x1: number;
|
|
18
|
+
_y0: number;
|
|
19
|
+
_y1: number;
|
|
20
|
+
_x2: number;
|
|
21
|
+
_y2: number;
|
|
22
|
+
_line: number;
|
|
23
|
+
_point: number;
|
|
24
|
+
_l01_a: number;
|
|
25
|
+
_l12_a: number;
|
|
26
|
+
_l23_a: number;
|
|
27
|
+
_l01_2a: number;
|
|
28
|
+
_l12_2a: number;
|
|
29
|
+
_l23_2a: number;
|
|
30
|
+
areaStart(): void;
|
|
31
|
+
areaEnd(): void;
|
|
32
|
+
lineStart(): void;
|
|
33
|
+
lineEnd(): void;
|
|
34
|
+
point(p: IPointLike): void;
|
|
35
|
+
tryUpdateLength(): number;
|
|
36
|
+
}
|
|
37
|
+
export declare function commonGenCatmullRomSegments(type: ICurveType, cons: any): (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D | null;
|
|
38
|
+
export declare const genCatmullRomSegments: (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D | null;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.genCatmullRomSegments = exports.commonGenCatmullRomSegments = exports.CatmullRom = exports.point = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), linear_1 = require("./linear"), common_1 = require("./common");
|
|
8
|
+
|
|
9
|
+
function point(curveClass, x, y, defined, p) {
|
|
10
|
+
let x1 = curveClass._x1, y1 = curveClass._y1, x2 = curveClass._x2, y2 = curveClass._y2;
|
|
11
|
+
if (curveClass._l01_a > vutils_1.epsilon) {
|
|
12
|
+
const a = 2 * curveClass._l01_2a + 3 * curveClass._l01_a * curveClass._l12_a + curveClass._l12_2a, n = 3 * curveClass._l01_a * (curveClass._l01_a + curveClass._l12_a);
|
|
13
|
+
x1 = (x1 * a - curveClass._x0 * curveClass._l12_2a + curveClass._x2 * curveClass._l01_2a) / n,
|
|
14
|
+
y1 = (y1 * a - curveClass._y0 * curveClass._l12_2a + curveClass._y2 * curveClass._l01_2a) / n;
|
|
15
|
+
}
|
|
16
|
+
if (curveClass._l23_a > vutils_1.epsilon) {
|
|
17
|
+
const b = 2 * curveClass._l23_2a + 3 * curveClass._l23_a * curveClass._l12_a + curveClass._l12_2a, m = 3 * curveClass._l23_a * (curveClass._l23_a + curveClass._l12_a);
|
|
18
|
+
x2 = (x2 * b + curveClass._x1 * curveClass._l23_2a - x * curveClass._l12_2a) / m,
|
|
19
|
+
y2 = (y2 * b + curveClass._y1 * curveClass._l23_2a - y * curveClass._l12_2a) / m;
|
|
20
|
+
}
|
|
21
|
+
curveClass.context.bezierCurveTo(x1, y1, x2, y2, curveClass._x2, curveClass._y2, defined, curveClass.lastPoint1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.point = point;
|
|
25
|
+
|
|
26
|
+
class CatmullRom {
|
|
27
|
+
constructor(context, alpha = .5, startPoint) {
|
|
28
|
+
this.context = context, this.startPoint = startPoint, this._alpha = alpha;
|
|
29
|
+
}
|
|
30
|
+
areaStart() {
|
|
31
|
+
this._line = 0;
|
|
32
|
+
}
|
|
33
|
+
areaEnd() {
|
|
34
|
+
this._line = NaN;
|
|
35
|
+
}
|
|
36
|
+
lineStart() {
|
|
37
|
+
this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;
|
|
38
|
+
}
|
|
39
|
+
lineEnd() {
|
|
40
|
+
switch (this._point) {
|
|
41
|
+
case 2:
|
|
42
|
+
this.context.lineTo(this._x2, this._y2, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1);
|
|
43
|
+
break;
|
|
44
|
+
|
|
45
|
+
case 3:
|
|
46
|
+
this.point({
|
|
47
|
+
x: this._x2,
|
|
48
|
+
y: this._y2
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
(this._line || 0 !== this._line && 1 === this._point) && this.context.closePath(),
|
|
52
|
+
this._line = 1 - this._line;
|
|
53
|
+
}
|
|
54
|
+
point(p) {
|
|
55
|
+
const {x: x, y: y} = p;
|
|
56
|
+
if (this._point) {
|
|
57
|
+
const x23 = this._x2 - x, y23 = this._y2 - y;
|
|
58
|
+
this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
|
|
59
|
+
}
|
|
60
|
+
switch (this._point) {
|
|
61
|
+
case 0:
|
|
62
|
+
this._point = 1, this._line ? this.context.lineTo(x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2) : this.context.moveTo(x, y);
|
|
63
|
+
break;
|
|
64
|
+
|
|
65
|
+
case 1:
|
|
66
|
+
this._point = 2;
|
|
67
|
+
break;
|
|
68
|
+
|
|
69
|
+
case 2:
|
|
70
|
+
this._point = 3;
|
|
71
|
+
|
|
72
|
+
default:
|
|
73
|
+
point(this, x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, p);
|
|
74
|
+
}
|
|
75
|
+
this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a,
|
|
76
|
+
this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = x,
|
|
77
|
+
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y, this._lastDefined1 = this._lastDefined2,
|
|
78
|
+
this._lastDefined2 = p.defined, this.lastPoint0 = this.lastPoint1, this.lastPoint1 = p;
|
|
79
|
+
}
|
|
80
|
+
tryUpdateLength() {
|
|
81
|
+
return this.context.tryUpdateLength();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function commonGenCatmullRomSegments(type, cons) {
|
|
86
|
+
return function(points, alpha, params = {}) {
|
|
87
|
+
const {direction: direction, startPoint: startPoint} = params;
|
|
88
|
+
if (points.length < 2 - Number(!!startPoint)) return null;
|
|
89
|
+
if (points.length < 3 - Number(!!startPoint)) return (0, linear_1.genLinearSegments)(points, params);
|
|
90
|
+
const segContext = (0, common_1.genSegContext)(type, direction, points), gatmullRom = new cons(segContext, alpha, startPoint);
|
|
91
|
+
return (0, common_1.genCurveSegments)(gatmullRom, points, 2), segContext;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
exports.CatmullRom = CatmullRom, exports.commonGenCatmullRomSegments = commonGenCatmullRomSegments,
|
|
96
|
+
exports.genCatmullRomSegments = commonGenCatmullRomSegments("catmullRom", CatmullRom);
|
|
97
|
+
//# sourceMappingURL=catmull-rom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/catmull-rom.ts"],"names":[],"mappings":"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","file":"catmull-rom.js","sourcesContent":["import { epsilon, type IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport type { ICurveType } from '../../interface';\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: CatmullRom, x: number, y: number, defined: boolean, p: IPointLike) {\n let x1 = curveClass._x1;\n let y1 = curveClass._y1;\n let x2 = curveClass._x2;\n let y2 = curveClass._y2;\n\n if (curveClass._l01_a > epsilon) {\n const a = 2 * curveClass._l01_2a + 3 * curveClass._l01_a * curveClass._l12_a + curveClass._l12_2a;\n const n = 3 * curveClass._l01_a * (curveClass._l01_a + curveClass._l12_a);\n x1 = (x1 * a - curveClass._x0 * curveClass._l12_2a + curveClass._x2 * curveClass._l01_2a) / n;\n y1 = (y1 * a - curveClass._y0 * curveClass._l12_2a + curveClass._y2 * curveClass._l01_2a) / n;\n }\n\n if (curveClass._l23_a > epsilon) {\n const b = 2 * curveClass._l23_2a + 3 * curveClass._l23_a * curveClass._l12_a + curveClass._l12_2a;\n const m = 3 * curveClass._l23_a * (curveClass._l23_a + curveClass._l12_a);\n x2 = (x2 * b + curveClass._x1 * curveClass._l23_2a - x * curveClass._l12_2a) / m;\n y2 = (y2 * b + curveClass._y1 * curveClass._l23_2a - y * curveClass._l12_2a) / m;\n }\n\n curveClass.context.bezierCurveTo(x1, y1, x2, y2, curveClass._x2, curveClass._y2, defined, curveClass.lastPoint1);\n}\n\nexport class CatmullRom implements ICurvedSegment {\n private _lastDefined1?: boolean;\n private _lastDefined2?: boolean;\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, alpha: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n this._alpha = alpha;\n }\n _alpha: number;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _x2: number;\n _y2: number;\n _line: number;\n _point: number;\n _l01_a: number;\n _l12_a: number;\n _l23_a: number;\n _l01_2a: number;\n _l12_2a: number;\n _l23_2a: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(\n this._x2,\n this._y2,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n case 3:\n this.point({ x: this._x2, y: this._y2 });\n 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, y } = p;\n\n if (this._point) {\n const x23 = this._x2 - x;\n const y23 = this._y2 - y;\n this._l23_a = Math.sqrt((this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false)\n : this.context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3; // falls through\n default:\n point(this, x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p);\n break;\n }\n\n (this._l01_a = this._l12_a), (this._l12_a = this._l23_a);\n (this._l01_2a = this._l12_2a), (this._l12_2a = this._l23_2a);\n (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = x);\n (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = y);\n\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\n// export function genCatmullRomTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n// return genCurveSegments(path, points, 2);\n// }\n\nexport function commonGenCatmullRomSegments(type: ICurveType, cons: any) {\n return function genCatmullRomSegments(\n points: IPointLike[],\n alpha: number,\n params: IGenSegmentParams = {}\n ): 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\n const segContext = genSegContext(type, direction, points);\n\n const gatmullRom = new cons(segContext, alpha, startPoint);\n\n genCurveSegments(gatmullRom, points, 2);\n // genCatmullRomTypeSegments(gatmullRom, points);\n\n return segContext;\n };\n}\n\nexport const genCatmullRomSegments = commonGenCatmullRomSegments('catmullRom', CatmullRom);\n\n// export function genCatmullRomSegments(\n// points: IPointLike[],\n// alpha: number,\n// params: IGenSegmentParams = {}\n// ): 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\n// const segContext = genSegContext('catmullRom', direction, points);\n\n// const gatmullRom = new CatmullRom(segContext, alpha, startPoint);\n\n// genCatmullRomTypeSegments(gatmullRom, points);\n\n// return segContext;\n// }\n"]}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { IPointLike } from '@visactor/vutils';
|
|
2
|
-
import type { ICurveType,
|
|
2
|
+
import type { ICurveType, ISegPath2D } from '../../interface';
|
|
3
3
|
export * from './linear';
|
|
4
4
|
export * from './linear-closed';
|
|
5
5
|
export * from './basis';
|
|
6
6
|
export * from './monotone';
|
|
7
7
|
export * from './step';
|
|
8
8
|
export * from './curve/curve-context';
|
|
9
|
-
export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?:
|
|
9
|
+
export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: {
|
|
10
|
+
startPoint?: IPointLike;
|
|
11
|
+
curveTension?: number;
|
|
12
|
+
}): ISegPath2D | null;
|
|
@@ -19,9 +19,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
value: !0
|
|
20
20
|
}), exports.calcLineCache = void 0;
|
|
21
21
|
|
|
22
|
-
const linear_1 = require("./linear"), basis_1 = require("./basis"), monotone_1 = require("./monotone"), step_1 = require("./step"), linear_closed_1 = require("./linear-closed");
|
|
22
|
+
const linear_1 = require("./linear"), basis_1 = require("./basis"), monotone_1 = require("./monotone"), step_1 = require("./step"), linear_closed_1 = require("./linear-closed"), catmull_rom_1 = require("./catmull-rom"), catmull_rom_close_1 = require("./catmull-rom-close");
|
|
23
23
|
|
|
24
24
|
function calcLineCache(points, curveType, params) {
|
|
25
|
+
var _a, _b;
|
|
25
26
|
switch (curveType) {
|
|
26
27
|
case "linear":
|
|
27
28
|
default:
|
|
@@ -45,6 +46,12 @@ function calcLineCache(points, curveType, params) {
|
|
|
45
46
|
case "stepAfter":
|
|
46
47
|
return (0, step_1.genStepSegments)(points, 1, params);
|
|
47
48
|
|
|
49
|
+
case "catmullRom":
|
|
50
|
+
return (0, catmull_rom_1.genCatmullRomSegments)(points, null !== (_a = null == params ? void 0 : params.curveTension) && void 0 !== _a ? _a : .5, params);
|
|
51
|
+
|
|
52
|
+
case "catmullRomClosed":
|
|
53
|
+
return (0, catmull_rom_close_1.genCatmullRomClosedSegments)(points, null !== (_b = null == params ? void 0 : params.curveTension) && void 0 !== _b ? _b : .5, params);
|
|
54
|
+
|
|
48
55
|
case "linearClosed":
|
|
49
56
|
return (0, linear_closed_1.genLinearClosedSegments)(points, params);
|
|
50
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAC1D,+CAAsD;AACtD,2DAAkE;AAElE,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAA2D;;IAE3D,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,IAAA,mCAAqB,EAAC,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5E,KAAK,kBAAkB;YACrB,OAAO,IAAA,+CAA2B,EAAC,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,GAAG,EAAE,MAAM,CAAC,CAAC;QAClF,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AA7BD,sCA6BC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\nimport { genCatmullRomSegments } from './catmull-rom';\nimport { genCatmullRomClosedSegments } from './catmull-rom-close';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: { startPoint?: IPointLike; curveTension?: number }\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'catmullRom':\n return genCatmullRomSegments(points, params?.curveTension ?? 0.5, params);\n case 'catmullRomClosed':\n return genCatmullRomClosedSegments(points, params?.curveTension ?? 0.5, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}
|