@visactor/vrender-core 0.16.20-alpha.4 → 0.16.20
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/canvas-allocate.d.ts +0 -4
- package/cjs/allocator/canvas-allocate.js +6 -19
- package/cjs/allocator/canvas-allocate.js.map +1 -1
- package/cjs/allocator/graphic-allocate.d.ts +1 -56
- package/cjs/allocator/graphic-allocate.js +1 -163
- package/cjs/allocator/graphic-allocate.js.map +1 -1
- package/cjs/animate/Ticker/default-ticker.js +1 -1
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/config.js +2 -1
- package/cjs/animate/custom-animate.js +1 -2
- package/cjs/canvas/contributions/base-canvas.js +2 -4
- package/cjs/canvas/contributions/base-canvas.js.map +1 -1
- package/cjs/common/Reflect-metadata.js +359 -349
- package/cjs/common/Reflect-metadata.js.map +1 -1
- package/cjs/common/bezier-utils.js +1 -2
- package/cjs/common/inversify-lite/annotation/post_construct.d.ts +4 -0
- package/cjs/common/{inversify/annotation/injectable.js → inversify-lite/annotation/post_construct.js} +5 -15
- package/cjs/common/inversify-lite/annotation/post_construct.js.map +1 -0
- package/cjs/common/inversify-lite/container/container.js +3 -1
- package/cjs/common/inversify-lite/container/container.js.map +1 -1
- package/cjs/common/inversify-lite/index.d.ts +8 -1
- package/cjs/common/inversify-lite/index.js +64 -1
- package/cjs/common/inversify-lite/index.js.map +1 -1
- package/cjs/common/inversify-lite/interfaces/interfaces.d.ts +2 -0
- package/cjs/common/inversify-lite/interfaces/interfaces.js.map +1 -1
- package/cjs/common/inversify-lite/planning/queryable_string.d.ts +2 -0
- package/cjs/common/inversify-lite/planning/queryable_string.js +10 -0
- package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/cjs/common/inversify-lite/resolution/resolver.js.map +1 -1
- package/cjs/common/render-area.js +1 -0
- package/cjs/common/render-area.js.map +1 -1
- package/cjs/common/segment/monotone.js +18 -20
- package/cjs/common/segment/monotone.js.map +1 -1
- package/cjs/common/shape/rect.js +1 -2
- package/cjs/common/shape/rect.js.map +1 -1
- package/cjs/common/sort.js +2 -1
- package/cjs/common/split-path.js +1 -2
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +9 -4
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
- package/cjs/core/contributions/layerHandler/empty-contribution.js +9 -4
- package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +9 -4
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/cjs/core/contributions/textMeasure/AtextMeasure.js +2 -3
- package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/cjs/core/contributions/textMeasure/modules.js +2 -1
- package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
- package/cjs/core/core-modules.js +6 -5
- package/cjs/core/core-modules.js.map +1 -1
- package/cjs/core/global.d.ts +0 -4
- package/cjs/core/global.js +5 -8
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/graphic-utils.d.ts +4 -7
- package/cjs/core/graphic-utils.js +14 -18
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/layer-service.d.ts +2 -5
- package/cjs/core/layer-service.js +13 -13
- package/cjs/core/layer-service.js.map +1 -1
- package/cjs/core/stage.d.ts +4 -7
- package/cjs/core/stage.js +34 -38
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.d.ts +2 -2
- package/cjs/core/window.js +12 -7
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-manager.js +2 -3
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/graphic/config.d.ts +2 -1
- package/cjs/graphic/config.js +5 -7
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/graphic-service/arc-contribution.d.ts +5 -1
- package/cjs/graphic/graphic-service/arc-contribution.js +18 -0
- package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/area-contribution.d.ts +1 -1
- package/cjs/graphic/graphic-service/area-contribution.js +4 -1
- package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/circle-contribution.d.ts +5 -1
- package/cjs/graphic/graphic-service/circle-contribution.js +18 -0
- package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/common-contribution.js +11 -2
- package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-module.js +17 -2
- package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-service.d.ts +7 -2
- package/cjs/graphic/graphic-service/graphic-service.js +30 -24
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic-service/path-contribution.d.ts +5 -1
- package/cjs/graphic/graphic-service/path-contribution.js +18 -0
- package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/rect-contribution.d.ts +5 -1
- package/cjs/graphic/graphic-service/rect-contribution.js +18 -0
- package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
- package/cjs/graphic/graphic-service/symbol-contribution.d.ts +1 -0
- package/cjs/graphic/graphic-service/symbol-contribution.js +13 -4
- package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
- package/cjs/graphic/graphic.js +2 -3
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.d.ts +0 -1
- package/cjs/graphic/group.js +3 -7
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/rect.d.ts +3 -2
- package/cjs/graphic/rect.js +5 -3
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/symbol.js +4 -7
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.js +4 -4
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/theme.d.ts +4 -4
- package/cjs/graphic/theme.js +26 -25
- package/cjs/graphic/theme.js.map +1 -1
- package/cjs/graphic/wrap-text.js +4 -4
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/index.d.ts +0 -2
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/allocator.d.ts +0 -1
- package/cjs/interface/allocator.js.map +1 -1
- package/cjs/interface/global.d.ts +0 -1
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic/rect.d.ts +0 -2
- package/cjs/interface/graphic/rect.js.map +1 -1
- package/cjs/interface/graphic.d.ts +4 -1
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/render.d.ts +2 -2
- package/cjs/interface/render.js.map +1 -1
- package/cjs/interface/stage.d.ts +1 -2
- package/cjs/interface/stage.js.map +1 -1
- package/cjs/modules.d.ts +2 -1
- package/cjs/modules.js +8 -8
- package/cjs/modules.js.map +1 -1
- package/cjs/picker/global-picker-service.d.ts +2 -2
- package/cjs/picker/global-picker-service.js +9 -4
- package/cjs/picker/global-picker-service.js.map +1 -1
- package/cjs/picker/pick-modules.js +4 -2
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +2 -2
- package/cjs/picker/picker-service.js +6 -6
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/plugin-modules.js +2 -1
- package/cjs/plugins/plugin-modules.js.map +1 -1
- package/cjs/render/contributions/render/arc-render.js +1 -2
- package/cjs/render/contributions/render/arc-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.d.ts +0 -1
- package/cjs/render/contributions/render/area-render.js +6 -44
- 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 +18 -15
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/circle-render.js +1 -2
- package/cjs/render/contributions/render/circle-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/arc-contribution-render.d.ts +7 -3
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js +30 -7
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/area-contribution-render.d.ts +4 -3
- package/cjs/render/contributions/render/contributions/area-contribution-render.js +21 -7
- package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +0 -2
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +9 -9
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/circle-contribution-render.d.ts +7 -3
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js +30 -7
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/constants.d.ts +0 -1
- package/cjs/render/contributions/render/contributions/constants.js +2 -2
- package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.d.ts +0 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +12 -6
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +0 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +12 -6
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/path-contribution-render.d.ts +9 -2
- package/cjs/render/contributions/render/contributions/path-contribution-render.js +25 -4
- package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/polygon-contribution-render.d.ts +9 -2
- package/cjs/render/contributions/render/contributions/polygon-contribution-render.js +25 -4
- package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.d.ts +7 -5
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +37 -17
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +7 -3
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +27 -6
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.d.ts +1 -8
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +1 -25
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.d.ts +6 -7
- package/cjs/render/contributions/render/draw-contribution.js +22 -31
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.d.ts +1 -9
- package/cjs/render/contributions/render/draw-interceptor.js +27 -41
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +2 -3
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +1 -2
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.d.ts +6 -2
- package/cjs/render/contributions/render/incremental-draw-contribution.js +11 -8
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/line-render.d.ts +0 -1
- package/cjs/render/contributions/render/line-render.js +6 -21
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/module.js +87 -32
- package/cjs/render/contributions/render/module.js.map +1 -1
- package/cjs/render/contributions/render/path-render.d.ts +1 -2
- package/cjs/render/contributions/render/path-render.js +5 -8
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js +1 -2
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.d.ts +1 -2
- package/cjs/render/contributions/render/rect-render.js +5 -11
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/render-slector.d.ts +4 -1
- package/cjs/render/contributions/render/render-slector.js +20 -0
- package/cjs/render/contributions/render/render-slector.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.d.ts +0 -1
- package/cjs/render/contributions/render/richtext-render.js +7 -12
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +1 -2
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/text-render.js +9 -12
- package/cjs/render/contributions/render/text-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.js +2 -2
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/render/render-modules.js +1 -1
- package/cjs/render/render-modules.js.map +1 -1
- package/cjs/render/render-service.js +1 -1
- package/cjs/render/render-service.js.map +1 -1
- package/dist/index.js +6240 -5326
- package/dist/index.min.js +1 -1
- package/es/allocator/canvas-allocate.d.ts +0 -4
- package/es/allocator/canvas-allocate.js +6 -19
- package/es/allocator/canvas-allocate.js.map +1 -1
- package/es/allocator/graphic-allocate.d.ts +1 -56
- package/es/allocator/graphic-allocate.js +1 -155
- package/es/allocator/graphic-allocate.js.map +1 -1
- package/es/animate/Ticker/default-ticker.js +1 -1
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/config.js +2 -1
- package/es/animate/custom-animate.js +1 -2
- package/es/canvas/contributions/base-canvas.js +2 -4
- package/es/canvas/contributions/base-canvas.js.map +1 -1
- package/es/common/Reflect-metadata.js +359 -349
- package/es/common/Reflect-metadata.js.map +1 -1
- package/es/common/bezier-utils.js +1 -2
- package/es/common/inversify-lite/annotation/post_construct.d.ts +4 -0
- package/es/common/inversify-lite/annotation/post_construct.js +10 -0
- package/es/common/inversify-lite/annotation/post_construct.js.map +1 -0
- package/es/common/inversify-lite/container/container.js +4 -2
- package/es/common/inversify-lite/container/container.js.map +1 -1
- package/es/common/inversify-lite/index.d.ts +8 -1
- package/es/common/inversify-lite/index.js +15 -1
- package/es/common/inversify-lite/index.js.map +1 -1
- package/es/common/inversify-lite/interfaces/interfaces.d.ts +2 -0
- package/es/common/inversify-lite/interfaces/interfaces.js.map +1 -1
- package/es/common/inversify-lite/planning/queryable_string.d.ts +2 -0
- package/es/common/inversify-lite/planning/queryable_string.js +10 -0
- package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/es/common/inversify-lite/resolution/resolver.js.map +1 -1
- package/es/common/render-area.js +1 -0
- package/es/common/render-area.js.map +1 -1
- package/es/common/segment/monotone.js +18 -20
- package/es/common/segment/monotone.js.map +1 -1
- package/es/common/shape/rect.js +1 -2
- package/es/common/shape/rect.js.map +1 -1
- package/es/common/sort.js +2 -1
- package/es/common/split-path.js +1 -2
- package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
- package/es/core/contributions/layerHandler/canvas2d-contribution.js +9 -5
- package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
- package/es/core/contributions/layerHandler/empty-contribution.js +9 -5
- package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js +9 -5
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.js +2 -3
- package/es/core/contributions/textMeasure/AtextMeasure.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/core-modules.js +6 -4
- package/es/core/core-modules.js.map +1 -1
- package/es/core/global.d.ts +0 -4
- package/es/core/global.js +4 -8
- package/es/core/global.js.map +1 -1
- package/es/core/graphic-utils.d.ts +4 -7
- package/es/core/graphic-utils.js +15 -20
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/layer-service.d.ts +2 -5
- package/es/core/layer-service.js +13 -14
- package/es/core/layer-service.js.map +1 -1
- package/es/core/stage.d.ts +4 -7
- package/es/core/stage.js +36 -42
- package/es/core/stage.js.map +1 -1
- package/es/core/window.d.ts +2 -2
- package/es/core/window.js +12 -8
- package/es/core/window.js.map +1 -1
- package/es/event/event-manager.js +2 -3
- package/es/event/event-manager.js.map +1 -1
- package/es/graphic/config.d.ts +2 -1
- package/es/graphic/config.js +6 -6
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/graphic-service/arc-contribution.d.ts +5 -1
- package/es/graphic/graphic-service/arc-contribution.js +15 -0
- package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
- package/es/graphic/graphic-service/area-contribution.d.ts +1 -1
- package/es/graphic/graphic-service/area-contribution.js +1 -2
- package/es/graphic/graphic-service/area-contribution.js.map +1 -1
- package/es/graphic/graphic-service/circle-contribution.d.ts +5 -1
- package/es/graphic/graphic-service/circle-contribution.js +15 -0
- package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
- package/es/graphic/graphic-service/common-contribution.js +14 -2
- package/es/graphic/graphic-service/common-contribution.js.map +1 -1
- package/es/graphic/graphic-service/graphic-module.js +23 -1
- package/es/graphic/graphic-service/graphic-module.js.map +1 -1
- package/es/graphic/graphic-service/graphic-service.d.ts +7 -2
- package/es/graphic/graphic-service/graphic-service.js +32 -25
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic-service/path-contribution.d.ts +5 -1
- package/es/graphic/graphic-service/path-contribution.js +15 -0
- package/es/graphic/graphic-service/path-contribution.js.map +1 -1
- package/es/graphic/graphic-service/rect-contribution.d.ts +5 -1
- package/es/graphic/graphic-service/rect-contribution.js +15 -0
- package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
- package/es/graphic/graphic-service/symbol-contribution.d.ts +1 -0
- package/es/graphic/graphic-service/symbol-contribution.js +16 -2
- package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
- package/es/graphic/graphic.js +2 -3
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.d.ts +0 -1
- package/es/graphic/group.js +1 -8
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/rect.d.ts +3 -2
- package/es/graphic/rect.js +7 -3
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/symbol.js +4 -6
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.js +4 -4
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/theme.d.ts +4 -4
- package/es/graphic/theme.js +27 -26
- package/es/graphic/theme.js.map +1 -1
- package/es/graphic/wrap-text.js +4 -4
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/index.d.ts +0 -2
- package/es/index.js +0 -4
- package/es/index.js.map +1 -1
- package/es/interface/allocator.d.ts +0 -1
- package/es/interface/allocator.js.map +1 -1
- package/es/interface/global.d.ts +0 -1
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic/rect.d.ts +0 -2
- package/es/interface/graphic/rect.js.map +1 -1
- package/es/interface/graphic.d.ts +4 -1
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/render.d.ts +2 -2
- package/es/interface/render.js.map +1 -1
- package/es/interface/stage.d.ts +1 -2
- package/es/interface/stage.js.map +1 -1
- package/es/modules.d.ts +2 -1
- package/es/modules.js +4 -0
- package/es/modules.js.map +1 -1
- package/es/picker/global-picker-service.d.ts +2 -2
- package/es/picker/global-picker-service.js +9 -5
- package/es/picker/global-picker-service.js.map +1 -1
- package/es/picker/pick-modules.js +4 -1
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +2 -2
- package/es/picker/picker-service.js +5 -5
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/plugin-modules.js +2 -1
- package/es/plugins/plugin-modules.js.map +1 -1
- package/es/render/contributions/render/arc-render.js +0 -3
- package/es/render/contributions/render/arc-render.js.map +1 -1
- package/es/render/contributions/render/area-render.d.ts +0 -1
- package/es/render/contributions/render/area-render.js +5 -45
- 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 +22 -15
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/circle-render.js +0 -3
- package/es/render/contributions/render/circle-render.js.map +1 -1
- package/es/render/contributions/render/contributions/arc-contribution-render.d.ts +7 -3
- package/es/render/contributions/render/contributions/arc-contribution-render.js +32 -6
- package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/area-contribution-render.d.ts +4 -3
- package/es/render/contributions/render/contributions/area-contribution-render.js +23 -5
- package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.d.ts +0 -2
- package/es/render/contributions/render/contributions/base-contribution-render.js +10 -6
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.d.ts +7 -3
- package/es/render/contributions/render/contributions/circle-contribution-render.js +32 -6
- package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/constants.d.ts +0 -1
- package/es/render/contributions/render/contributions/constants.js +0 -2
- package/es/render/contributions/render/contributions/constants.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.d.ts +0 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +13 -3
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.d.ts +0 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +14 -4
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/path-contribution-render.d.ts +9 -2
- package/es/render/contributions/render/contributions/path-contribution-render.js +29 -3
- package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/polygon-contribution-render.d.ts +9 -2
- package/es/render/contributions/render/contributions/polygon-contribution-render.js +29 -3
- package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.d.ts +7 -5
- package/es/render/contributions/render/contributions/rect-contribution-render.js +46 -19
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +7 -3
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +24 -6
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.d.ts +1 -8
- package/es/render/contributions/render/contributions/text-contribution-render.js +1 -24
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.d.ts +6 -7
- package/es/render/contributions/render/draw-contribution.js +24 -35
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.d.ts +1 -9
- package/es/render/contributions/render/draw-interceptor.js +35 -38
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/group-render.js +1 -4
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +1 -3
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.d.ts +6 -2
- package/es/render/contributions/render/incremental-draw-contribution.js +11 -5
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/line-render.d.ts +0 -1
- package/es/render/contributions/render/line-render.js +6 -21
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/module.js +83 -29
- package/es/render/contributions/render/module.js.map +1 -1
- package/es/render/contributions/render/path-render.d.ts +1 -2
- package/es/render/contributions/render/path-render.js +4 -8
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js +0 -3
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.d.ts +1 -2
- package/es/render/contributions/render/rect-render.js +3 -11
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/render-slector.d.ts +4 -1
- package/es/render/contributions/render/render-slector.js +15 -0
- package/es/render/contributions/render/render-slector.js.map +1 -1
- package/es/render/contributions/render/richtext-render.d.ts +0 -1
- package/es/render/contributions/render/richtext-render.js +6 -12
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +0 -3
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/text-render.js +9 -13
- package/es/render/contributions/render/text-render.js.map +1 -1
- package/es/render/contributions/render/utils.js +2 -2
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/render/render-modules.js +1 -1
- package/es/render/render-modules.js.map +1 -1
- package/es/render/render-service.js +1 -1
- package/es/render/render-service.js.map +1 -1
- package/package.json +3 -5
- package/cjs/allocator/bounds-allocate.d.ts +0 -13
- package/cjs/allocator/bounds-allocate.js +0 -38
- package/cjs/allocator/bounds-allocate.js.map +0 -1
- package/cjs/common/inversify/annotation/inject.d.ts +0 -1
- package/cjs/common/inversify/annotation/inject.js +0 -10
- package/cjs/common/inversify/annotation/inject.js.map +0 -1
- package/cjs/common/inversify/annotation/inject_base.d.ts +0 -14
- package/cjs/common/inversify/annotation/inject_base.js +0 -39
- package/cjs/common/inversify/annotation/inject_base.js.map +0 -1
- package/cjs/common/inversify/annotation/injectable.d.ts +0 -1
- package/cjs/common/inversify/annotation/injectable.js.map +0 -1
- package/cjs/common/inversify/annotation/multi_inject.d.ts +0 -1
- package/cjs/common/inversify/annotation/multi_inject.js +0 -10
- package/cjs/common/inversify/annotation/multi_inject.js.map +0 -1
- package/cjs/common/inversify/annotation/named.d.ts +0 -1
- package/cjs/common/inversify/annotation/named.js +0 -14
- package/cjs/common/inversify/annotation/named.js.map +0 -1
- package/cjs/common/inversify/binding.d.ts +0 -18
- package/cjs/common/inversify/binding.js +0 -26
- package/cjs/common/inversify/binding.js.map +0 -1
- package/cjs/common/inversify/container.d.ts +0 -28
- package/cjs/common/inversify/container.js +0 -155
- package/cjs/common/inversify/container.js.map +0 -1
- package/cjs/common/inversify/cotainer-module.d.ts +0 -6
- package/cjs/common/inversify/cotainer-module.js +0 -16
- package/cjs/common/inversify/cotainer-module.js.map +0 -1
- package/cjs/common/inversify/index.d.ts +0 -7
- package/cjs/common/inversify/index.js +0 -75
- package/cjs/common/inversify/index.js.map +0 -1
- package/cjs/common/inversify/interfaces.d.ts +0 -218
- package/cjs/common/inversify/interfaces.js +0 -6
- package/cjs/common/inversify/interfaces.js.map +0 -1
- package/cjs/common/inversify/literal_types.d.ts +0 -5
- package/cjs/common/inversify/literal_types.js +0 -34
- package/cjs/common/inversify/literal_types.js.map +0 -1
- package/cjs/common/inversify/meta-data.d.ts +0 -6
- package/cjs/common/inversify/meta-data.js +0 -19
- package/cjs/common/inversify/meta-data.js.map +0 -1
- package/cjs/common/inversify/metadata_keys.d.ts +0 -12
- package/cjs/common/inversify/metadata_keys.js +0 -15
- package/cjs/common/inversify/metadata_keys.js.map +0 -1
- package/cjs/common/inversify/metadata_reader.d.ts +0 -6
- package/cjs/common/inversify/metadata_reader.js +0 -28
- package/cjs/common/inversify/metadata_reader.js.map +0 -1
- package/cjs/common/inversify/syntax/binding_in_syntax.d.ts +0 -10
- package/cjs/common/inversify/syntax/binding_in_syntax.js +0 -29
- package/cjs/common/inversify/syntax/binding_in_syntax.js.map +0 -1
- package/cjs/common/inversify/syntax/binding_to_syntax.d.ts +0 -12
- package/cjs/common/inversify/syntax/binding_to_syntax.js +0 -40
- package/cjs/common/inversify/syntax/binding_to_syntax.js.map +0 -1
- package/cjs/common/inversify/syntax/constraint_helpers.d.ts +0 -2
- package/cjs/common/inversify/syntax/constraint_helpers.js +0 -20
- package/cjs/common/inversify/syntax/constraint_helpers.js.map +0 -1
- package/es/allocator/bounds-allocate.d.ts +0 -13
- package/es/allocator/bounds-allocate.js +0 -32
- package/es/allocator/bounds-allocate.js.map +0 -1
- package/es/common/inversify/annotation/inject.d.ts +0 -1
- package/es/common/inversify/annotation/inject.js +0 -6
- package/es/common/inversify/annotation/inject.js.map +0 -1
- package/es/common/inversify/annotation/inject_base.d.ts +0 -14
- package/es/common/inversify/annotation/inject_base.js +0 -29
- package/es/common/inversify/annotation/inject_base.js.map +0 -1
- package/es/common/inversify/annotation/injectable.d.ts +0 -1
- package/es/common/inversify/annotation/injectable.js +0 -10
- package/es/common/inversify/annotation/injectable.js.map +0 -1
- package/es/common/inversify/annotation/multi_inject.d.ts +0 -1
- package/es/common/inversify/annotation/multi_inject.js +0 -6
- package/es/common/inversify/annotation/multi_inject.js.map +0 -1
- package/es/common/inversify/annotation/named.d.ts +0 -1
- package/es/common/inversify/annotation/named.js +0 -10
- package/es/common/inversify/annotation/named.js.map +0 -1
- package/es/common/inversify/binding.d.ts +0 -18
- package/es/common/inversify/binding.js +0 -22
- package/es/common/inversify/binding.js.map +0 -1
- package/es/common/inversify/container.d.ts +0 -28
- package/es/common/inversify/container.js +0 -155
- package/es/common/inversify/container.js.map +0 -1
- package/es/common/inversify/cotainer-module.d.ts +0 -6
- package/es/common/inversify/cotainer-module.js +0 -8
- package/es/common/inversify/cotainer-module.js.map +0 -1
- package/es/common/inversify/index.d.ts +0 -7
- package/es/common/inversify/index.js +0 -14
- package/es/common/inversify/index.js.map +0 -1
- package/es/common/inversify/interfaces.d.ts +0 -218
- package/es/common/inversify/interfaces.js +0 -2
- package/es/common/inversify/interfaces.js.map +0 -1
- package/es/common/inversify/literal_types.d.ts +0 -5
- package/es/common/inversify/literal_types.js +0 -20
- package/es/common/inversify/literal_types.js.map +0 -1
- package/es/common/inversify/meta-data.d.ts +0 -6
- package/es/common/inversify/meta-data.js +0 -11
- package/es/common/inversify/meta-data.js.map +0 -1
- package/es/common/inversify/metadata_keys.d.ts +0 -12
- package/es/common/inversify/metadata_keys.js +0 -28
- package/es/common/inversify/metadata_keys.js.map +0 -1
- package/es/common/inversify/metadata_reader.d.ts +0 -6
- package/es/common/inversify/metadata_reader.js +0 -18
- package/es/common/inversify/metadata_reader.js.map +0 -1
- package/es/common/inversify/syntax/binding_in_syntax.d.ts +0 -10
- package/es/common/inversify/syntax/binding_in_syntax.js +0 -24
- package/es/common/inversify/syntax/binding_in_syntax.js.map +0 -1
- package/es/common/inversify/syntax/binding_to_syntax.d.ts +0 -12
- package/es/common/inversify/syntax/binding_to_syntax.js +0 -36
- package/es/common/inversify/syntax/binding_to_syntax.js.map +0 -1
- package/es/common/inversify/syntax/constraint_helpers.d.ts +0 -2
- package/es/common/inversify/syntax/constraint_helpers.js +0 -18
- package/es/common/inversify/syntax/constraint_helpers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/global-picker-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/picker/global-picker-service.ts"],"names":[],"mappings":"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","file":"global-picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point } from '@visactor/vutils';\nimport { inject, injectable } from '../common/inversify-lite';\nimport type {\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult\n} from '../interface';\nimport { VGlobal } from '../constants';\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultGlobalPickerService implements IPickerService {\n type: 'global';\n\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(PickerContribution)\n // protected readonly contributions: ContributionProvider<IPickerContribution>,\n @inject(VGlobal) public readonly global: IGlobal\n ) {\n this.global.hooks.onSetEnv.tap('global-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n }\n\n configure(global: IGlobal, env: EnvType) {\n // if (!this.global.env) return;\n // this.contributions.getContributions().forEach(handlerContribution => {\n // handlerContribution.configure(this, this.global);\n // });\n }\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPointLike, params?: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n const parentMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n let group: IGroup;\n for (let i = 0; i < graphics.length; i++) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n const data = this.pickItem(graphics[i], point, parentMatrix, params);\n if (data) {\n result.graphic = data.graphic;\n result.params = data.params;\n }\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n // 判断是否有shadow-dom\n if (result.graphic) {\n let g = result.graphic;\n while (g.parent) {\n g = g.parent;\n }\n if (g.shadowHost) {\n result.params = {\n shadowTarget: result.graphic\n };\n result.graphic = g.shadowHost;\n }\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params?: IPickParams): boolean {\n return !!this.pickItem(graphic, point, null, params);\n }\n\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params?: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过\n if (!insideGroup) {\n return result;\n }\n // todo: 支持带有path的group的选中\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n parentMatrix.multiply(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f);\n\n if (group.attribute.childrenPickable !== false) {\n group.forEachChildren((graphic: IGraphic) => {\n if (graphic.isContainer) {\n result = this.pickGroup(graphic as IGroup, point, parentMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n const data = this.pickItem(graphic, newPoint, parentMatrix, params);\n if (data) {\n result.graphic = data.graphic;\n result.params = data.params;\n }\n }\n return !!result.graphic || !!result.group;\n });\n }\n\n if (!result.graphic && !result.group && groupPicked) {\n result.group = group;\n }\n\n return result;\n }\n\n // todo: switch统一改为数字map\n pickItem(\n graphic: IGraphic,\n point: IPointLike,\n parentMatrix: IMatrix | null,\n params?: IPickParams\n ): PickResult | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n if (graphic.AABBBounds.containsPoint(point)) {\n return {\n graphic: graphic\n };\n }\n return null;\n }\n}\n"]}
|
|
@@ -4,10 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
-
const inversify_lite_1 = require("../common/inversify-lite"), constants_1 = require("./constants"), pick_interceptor_1 = require("./pick-interceptor"), contribution_provider_1 = require("../common/contribution-provider");
|
|
7
|
+
const inversify_lite_1 = require("../common/inversify-lite"), constants_1 = require("./constants"), global_picker_service_1 = require("./global-picker-service"), pick_interceptor_1 = require("./pick-interceptor"), contribution_provider_1 = require("../common/contribution-provider");
|
|
8
8
|
|
|
9
9
|
exports.default = new inversify_lite_1.ContainerModule((bind => {
|
|
10
|
-
bind(constants_1.PickerService).toService(constants_1.GlobalPickerService), bind(
|
|
10
|
+
bind(constants_1.PickerService).toService(constants_1.GlobalPickerService), bind(global_picker_service_1.DefaultGlobalPickerService).toSelf().inSingletonScope(),
|
|
11
|
+
bind(constants_1.GlobalPickerService).toService(global_picker_service_1.DefaultGlobalPickerService),
|
|
12
|
+
bind(pick_interceptor_1.Canvas3DPickItemInterceptor).toSelf().inSingletonScope(),
|
|
11
13
|
bind(pick_interceptor_1.PickItemInterceptor).toService(pick_interceptor_1.Canvas3DPickItemInterceptor),
|
|
12
14
|
bind(pick_interceptor_1.ShadowRootPickItemInterceptorContribution).toSelf().inSingletonScope(),
|
|
13
15
|
bind(pick_interceptor_1.PickItemInterceptor).toService(pick_interceptor_1.ShadowRootPickItemInterceptorContribution),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/pick-modules.ts"],"names":[],"mappings":";;AAAA,6DAA2D;AAC3D,2CAAiE;
|
|
1
|
+
{"version":3,"sources":["../src/picker/pick-modules.ts"],"names":[],"mappings":";;AAAA,6DAA2D;AAC3D,2CAAiE;AACjE,mEAAqE;AAGrE,yDAK4B;AAC5B,2EAA2E;AAE3E,kBAAe,IAAI,gCAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,yBAAa,CAAC,CAAC,SAAS,CAAC,+BAAmB,CAAC,CAAC;IAEnD,IAAI,CAAC,kDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,+BAAmB,CAAC,CAAC,SAAS,CAAC,kDAA0B,CAAC,CAAC;IAGhE,IAAI,CAAC,8CAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,sCAAmB,CAAC,CAAC,SAAS,CAAC,8CAA2B,CAAC,CAAC;IAGjE,IAAI,CAAC,4DAAyC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5E,IAAI,CAAC,sCAAmB,CAAC,CAAC,SAAS,CAAC,4DAAyC,CAAC,CAAC;IAG/E,IAAI,CAAC,6DAA0C,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,sCAAmB,CAAC,CAAC,SAAS,CAAC,6DAA0C,CAAC,CAAC;IAChF,IAAA,gDAAwB,EAAC,IAAI,EAAE,sCAAmB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC","file":"pick-modules.js","sourcesContent":["import { ContainerModule } from '../common/inversify-lite';\nimport { PickerService, GlobalPickerService } from './constants';\nimport { DefaultGlobalPickerService } from './global-picker-service';\n// import { DefaultCanvasPickerService } from './canvas-picker-service';\n// import { DefaultMathPickerService } from './math-picker-service';\nimport {\n Canvas3DPickItemInterceptor,\n InteractivePickItemInterceptorContribution,\n PickItemInterceptor,\n ShadowRootPickItemInterceptorContribution\n} from './pick-interceptor';\nimport { bindContributionProvider } from '../common/contribution-provider';\n\nexport default new ContainerModule(bind => {\n bind(PickerService).toService(GlobalPickerService);\n\n bind(DefaultGlobalPickerService).toSelf().inSingletonScope();\n bind(GlobalPickerService).toService(DefaultGlobalPickerService);\n\n // interceptor\n bind(Canvas3DPickItemInterceptor).toSelf().inSingletonScope();\n bind(PickItemInterceptor).toService(Canvas3DPickItemInterceptor);\n\n // shadow root\n bind(ShadowRootPickItemInterceptorContribution).toSelf().inSingletonScope();\n bind(PickItemInterceptor).toService(ShadowRootPickItemInterceptorContribution);\n\n // interactive\n bind(InteractivePickItemInterceptorContribution).toSelf().inSingletonScope();\n bind(PickItemInterceptor).toService(InteractivePickItemInterceptorContribution);\n bindContributionProvider(bind, PickItemInterceptor);\n});\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';
|
|
2
2
|
import type { IContext2d, IGraphic, IGroup, EnvType, IGlobal, IPickerService, IGraphicPicker, IPickParams, PickResult, IPickItemInterceptorContribution, IContributionProvider } from '../interface';
|
|
3
3
|
export declare abstract class DefaultPickService implements IPickerService {
|
|
4
|
+
readonly global: IGlobal;
|
|
4
5
|
protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>;
|
|
5
6
|
type: string;
|
|
6
7
|
pickerMap: Map<number, IGraphicPicker>;
|
|
7
8
|
pickContext?: IContext2d;
|
|
8
9
|
InterceptorContributions: IPickItemInterceptorContribution[];
|
|
9
|
-
global: IGlobal;
|
|
10
|
-
constructor(pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>);
|
|
10
|
+
constructor(global: IGlobal, pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>);
|
|
11
11
|
protected _init(): void;
|
|
12
12
|
abstract configure(global: IGlobal, env: EnvType): void;
|
|
13
13
|
pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult;
|
|
@@ -16,12 +16,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultPickService = void 0;
|
|
18
18
|
|
|
19
|
-
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../common/inversify-lite"), sort_1 = require("../common/sort"), contribution_provider_1 = require("../common/contribution-provider"), graphic_1 = require("../graphic"), matrix_allocate_1 = require("../allocator/matrix-allocate"), pick_interceptor_1 = require("./pick-interceptor"),
|
|
19
|
+
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../common/inversify-lite"), sort_1 = require("../common/sort"), contribution_provider_1 = require("../common/contribution-provider"), graphic_1 = require("../graphic"), matrix_allocate_1 = require("../allocator/matrix-allocate"), pick_interceptor_1 = require("./pick-interceptor"), constants_1 = require("../constants");
|
|
20
20
|
|
|
21
21
|
let DefaultPickService = class {
|
|
22
|
-
constructor(pickItemInterceptorContributions) {
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
22
|
+
constructor(global, pickItemInterceptorContributions) {
|
|
23
|
+
this.global = global, this.pickItemInterceptorContributions = pickItemInterceptorContributions,
|
|
24
|
+
this.type = "default";
|
|
25
25
|
}
|
|
26
26
|
_init() {
|
|
27
27
|
this.InterceptorContributions = this.pickItemInterceptorContributions.getContributions().sort(((a, b) => a.order - b.order));
|
|
@@ -119,7 +119,7 @@ let DefaultPickService = class {
|
|
|
119
119
|
};
|
|
120
120
|
|
|
121
121
|
DefaultPickService = __decorate([ (0, inversify_lite_1.injectable)(), __param(0, (0,
|
|
122
|
-
inversify_lite_1.inject)(contribution_provider_1.ContributionProvider)), __param(
|
|
123
|
-
inversify_lite_1.named)(pick_interceptor_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object ]) ], DefaultPickService),
|
|
122
|
+
inversify_lite_1.inject)(constants_1.VGlobal)), __param(1, (0, inversify_lite_1.inject)(contribution_provider_1.ContributionProvider)), __param(1, (0,
|
|
123
|
+
inversify_lite_1.named)(pick_interceptor_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object, Object ]) ], DefaultPickService),
|
|
124
124
|
exports.DefaultPickService = DefaultPickService;
|
|
125
125
|
//# sourceMappingURL=picker-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point } from '@visactor/vutils';\nimport { inject, injectable, named } from '../common/inversify-lite';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { application } from '../application';\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n declare global: IGlobal;\n\n constructor(\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {\n this.global = application.global;\n }\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result = this.pickItem(graphics[i], point, parentMatrix, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n\n // 判断是否有shadow-dom\n if (result.graphic) {\n let g = result.graphic;\n while (g.parent) {\n g = g.parent;\n }\n if (g.shadowHost) {\n result.params = {\n shadowTarget: result.graphic\n };\n result.graphic = g.shadowHost;\n }\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, null, params ?? { pickContext: this.pickContext, pickerService: this })\n ?.graphic;\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n // pickGroup,Group目前只支持拦截模式(用于shadow节点)\n const pickedItem = this.pickItem(group, newPoint.clone(), parentMatrix, params);\n if (pickedItem && pickedItem.graphic) {\n result.graphic = pickedItem.graphic;\n result.params = pickedItem.params;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false && !(pickedItem && pickedItem.graphic)) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, parentMatrix, params);\n if (pickedItem && pickedItem.graphic) {\n result.graphic = pickedItem.graphic;\n result.params = pickedItem.params;\n }\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(\n graphic: IGraphic,\n point: IPointLike,\n parentMatrix: IMatrix | null,\n params: IPickParams\n ): PickResult | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point } from '@visactor/vutils';\nimport { inject, injectable, named } from '../common/inversify-lite';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { VGlobal } from '../constants';\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n\n constructor(\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {}\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result = this.pickItem(graphics[i], point, parentMatrix, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n\n // 判断是否有shadow-dom\n if (result.graphic) {\n let g = result.graphic;\n while (g.parent) {\n g = g.parent;\n }\n if (g.shadowHost) {\n result.params = {\n shadowTarget: result.graphic\n };\n result.graphic = g.shadowHost;\n }\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, null, params ?? { pickContext: this.pickContext, pickerService: this })\n ?.graphic;\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n // pickGroup,Group目前只支持拦截模式(用于shadow节点)\n const pickedItem = this.pickItem(group, newPoint.clone(), parentMatrix, params);\n if (pickedItem && pickedItem.graphic) {\n result.graphic = pickedItem.graphic;\n result.params = pickedItem.params;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false && !(pickedItem && pickedItem.graphic)) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, parentMatrix, params);\n if (pickedItem && pickedItem.graphic) {\n result.graphic = pickedItem.graphic;\n result.params = pickedItem.params;\n }\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(\n graphic: IGraphic,\n point: IPointLike,\n parentMatrix: IMatrix | null,\n params: IPickParams\n ): PickResult | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const inversify_lite_1 = require("../common/inversify-lite"), constants_1 = require("./constants"), plugin_service_1 = require("./plugin-service"), contribution_provider_1 = require("../common/contribution-provider"), constants_2 = require("./constants");
|
|
8
8
|
|
|
9
9
|
exports.default = new inversify_lite_1.ContainerModule((bind => {
|
|
10
|
-
bind(
|
|
10
|
+
bind(plugin_service_1.DefaultPluginService).toSelf(), bind(constants_1.PluginService).toService(plugin_service_1.DefaultPluginService),
|
|
11
|
+
(0, contribution_provider_1.bindContributionProviderNoSingletonScope)(bind, constants_2.AutoEnablePlugins);
|
|
11
12
|
}));
|
|
12
13
|
//# sourceMappingURL=plugin-modules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugins/plugin-modules.ts"],"names":[],"mappings":";;AAAA,6DAA2D;AAC3D,2CAA4C;AAC5C,qDAAwD;AACxD,2EAA2F;AAC3F,2CAAgD;AAEhD,kBAAe,IAAI,gCAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/plugins/plugin-modules.ts"],"names":[],"mappings":";;AAAA,6DAA2D;AAC3D,2CAA4C;AAC5C,qDAAwD;AACxD,2EAA2F;AAC3F,2CAAgD;AAEhD,kBAAe,IAAI,gCAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,qCAAoB,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,IAAI,CAAC,yBAAa,CAAC,CAAC,SAAS,CAAC,qCAAoB,CAAC,CAAC;IAGpD,IAAA,gEAAwC,EAAC,IAAI,EAAE,6BAAiB,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC","file":"plugin-modules.js","sourcesContent":["import { ContainerModule } from '../common/inversify-lite';\nimport { PluginService } from './constants';\nimport { DefaultPluginService } from './plugin-service';\nimport { bindContributionProviderNoSingletonScope } from '../common/contribution-provider';\nimport { AutoEnablePlugins } from './constants';\n\nexport default new ContainerModule(bind => {\n bind(DefaultPluginService).toSelf();\n bind(PluginService).toService(DefaultPluginService);\n\n // image 渲染器注入contributions\n bindContributionProviderNoSingletonScope(bind, AutoEnablePlugins);\n});\n"]}
|
|
@@ -16,12 +16,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasArcRender = void 0;
|
|
18
18
|
|
|
19
|
-
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../../../common/inversify-lite"), theme_1 = require("../../../graphic/theme"), utils_1 = require("../../../common/utils"), contribution_provider_1 = require("../../../common/contribution-provider"), utils_2 = require("./utils"), conical_gradient_1 = require("../../../canvas/conical-gradient"), constants_1 = require("./contributions/constants"), constants_2 = require("../../../graphic/constants"), base_render_1 = require("./base-render")
|
|
19
|
+
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../../../common/inversify-lite"), theme_1 = require("../../../graphic/theme"), utils_1 = require("../../../common/utils"), contribution_provider_1 = require("../../../common/contribution-provider"), utils_2 = require("./utils"), conical_gradient_1 = require("../../../canvas/conical-gradient"), constants_1 = require("./contributions/constants"), constants_2 = require("../../../graphic/constants"), base_render_1 = require("./base-render");
|
|
20
20
|
|
|
21
21
|
let DefaultCanvasArcRender = class extends base_render_1.BaseRender {
|
|
22
22
|
constructor(arcRenderContribitions) {
|
|
23
23
|
super(), this.arcRenderContribitions = arcRenderContribitions, this.numberType = constants_2.ARC_NUMBER_TYPE,
|
|
24
|
-
this.builtinContributions = [ contributions_1.defaultArcRenderContribution, contributions_1.defaultArcBackgroundRenderContribution, contributions_1.defaultArcTextureRenderContribution ],
|
|
25
24
|
this.init(arcRenderContribitions);
|
|
26
25
|
}
|
|
27
26
|
drawArcTailCapPath(arc, context, cx, cy, outerRadius, innerRadius, _sa, _ea) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/arc-render.ts"],"names":[],"mappings":"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","file":"arc-render.js","sourcesContent":["import { abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2, isBoolean } from '@visactor/vutils';\nimport { inject, injectable, named } from '../../../common/inversify-lite';\nimport { getTheme } from '../../../graphic/theme';\nimport { parseStroke } from '../../../common/utils';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport type {\n IContext2d,\n IArc,\n IPath2D,\n IGraphicAttribute,\n IMarkAttribute,\n IThemeAttribute,\n IGradientColor,\n IArcRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IConicalGradient\n} from '../../../interface';\nimport {\n cornerTangents,\n drawArcPath,\n drawPathProxy,\n fillVisible,\n intersect,\n runFill,\n runStroke,\n strokeVisible\n} from './utils';\nimport { getConicGradientAt } from '../../../canvas/conical-gradient';\nimport { ArcRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime } from '../../../common/enums';\nimport { ARC_NUMBER_TYPE } from '../../../graphic/constants';\nimport { BaseRender } from './base-render';\nimport {\n defaultArcBackgroundRenderContribution,\n defaultArcRenderContribution,\n defaultArcTextureRenderContribution\n} from './contributions';\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@injectable()\nexport class DefaultCanvasArcRender extends BaseRender<IArc> implements IGraphicRender {\n type: 'arc';\n numberType: number = ARC_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(ArcRenderContribution)\n protected readonly arcRenderContribitions: IContributionProvider<IArcRenderContribution>\n ) {\n super();\n this.builtinContributions = [\n defaultArcRenderContribution,\n defaultArcBackgroundRenderContribution,\n defaultArcTextureRenderContribution\n ];\n this.init(arcRenderContribitions);\n }\n\n // 绘制尾部cap\n drawArcTailCapPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n _sa: number,\n _ea: number\n ) {\n const capAngle = _ea - _sa;\n const data = arc.getParsedAngle();\n const startAngle = data.startAngle;\n let endAngle = data.endAngle;\n endAngle = _ea;\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n\n const cornerRadius = arc.getParsedCornerRadius();\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadius;\n const outerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusStart = cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n const a1 = endAngle - capAngle - 0.03;\n const a2 = atan2(t1.y11, t1.x11);\n context.arc(cx, cy, outerRadius, a1, a2, !clockwise);\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n }\n } else {\n context.moveTo(cx + xors, cy + yors);\n }\n // else {\n // // Or is the outer ring just a circular arc?\n // if (!partStroke || partStroke[0]) {\n // context.moveTo(cx + xors, cy + yors);\n // context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n // } else {\n // // context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + yore);\n // }\n // }\n // // Is there no inner ring, and it’s a circular sector?\n // // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n context.lineTo(cx + xire, cy + yire);\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n const a1 = atan2(t0.cy + t0.y11, t0.cx + t0.x11);\n const a2 = endAngle - capAngle - 0.03;\n context.arc(cx, cy, innerRadius, a1, a2, clockwise);\n }\n } else {\n context.lineTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n\n return collapsedToLine;\n }\n\n drawShape(\n arc: IArc,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n const {\n fill = arcAttribute.fill,\n stroke = arcAttribute.stroke,\n x: originX = arcAttribute.x,\n y: originY = arcAttribute.y\n } = arc.attribute;\n const data = this.valid(arc, arcAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { fVisible, sVisible, doFill, doStroke } = data;\n\n const {\n outerRadius = arcAttribute.outerRadius,\n innerRadius = arcAttribute.innerRadius,\n cap = arcAttribute.cap,\n forceShowCap = arcAttribute.forceShowCap\n } = arc.attribute;\n // 判断是否是环形渐变,且有头部cap,那就偏移渐变色角度\n let conicalOffset = 0;\n const tempChangeConicalColor =\n ((isBoolean(cap) && cap) || cap[0]) && (fill as IGradientColor).gradient === 'conical';\n if (tempChangeConicalColor) {\n const { sc, startAngle, endAngle } = arc.getParsedAngle();\n if (abs(endAngle - startAngle) < pi2 - epsilon) {\n conicalOffset = sc || 0;\n (fill as IConicalGradient).startAngle -= conicalOffset;\n (fill as IConicalGradient).endAngle -= conicalOffset;\n }\n }\n\n let beforeRenderContribitionsRuned = false;\n const { isFullStroke, stroke: arrayStroke } = parseStroke(stroke);\n if (doFill || isFullStroke) {\n context.beginPath();\n // if (arc.shouldUpdateShape()) {\n // // 更新shape\n // arc.cache = new Path2D(context);\n // this.drawArcPath(arc, arc.cache, x, y, outerRadius, innerRadius);\n // arc.clearUpdateShapeTag();\n // } else {\n // if (arc.cache) {\n // renderCommandList(arc.cache.commandList, context);\n // }\n // }\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此arc不再使用cache\n drawArcPath(arc, context, x, y, outerRadius, innerRadius);\n\n beforeRenderContribitionsRuned = true;\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(arc, arc.attribute, arcAttribute);\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n if (doFill) {\n if (fillCb) {\n fillCb(context, arc.attribute, arcAttribute);\n } else if (fVisible) {\n context.setCommonStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.fill();\n }\n }\n\n if (doStroke && isFullStroke) {\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.stroke();\n }\n }\n }\n\n // 需要局部渲染描边的时候\n if (!isFullStroke && doStroke) {\n context.beginPath();\n const collapsedToLine = drawArcPath(arc, context, x, y, outerRadius, innerRadius, arrayStroke);\n\n if (!beforeRenderContribitionsRuned) {\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n context.stroke();\n }\n }\n\n // 绘制cap\n if (((isBoolean(cap) && cap) || cap[1]) && forceShowCap) {\n const { startAngle: sa, endAngle: ea } = arc.getParsedAngle();\n const deltaAngle = abs(ea - sa);\n if (deltaAngle >= pi2 - epsilon) {\n context.beginPath();\n const capWidth = Math.abs(outerRadius - innerRadius) / 2;\n // 以外边界长度为准\n const capAngle = capWidth / outerRadius;\n const { endAngle = arcAttribute.endAngle, fill = arcAttribute.fill } = arc.attribute;\n const startAngle = endAngle;\n this.drawArcTailCapPath(arc, context, x, y, outerRadius, innerRadius, startAngle, startAngle + capAngle);\n\n if (!beforeRenderContribitionsRuned) {\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n if (doFill) {\n // 获取渐变色最后一个颜色\n const color = fill;\n if ((color as IGradientColor).gradient === 'conical') {\n const lastColor = getConicGradientAt(0, 0, endAngle, color as any);\n if (fillCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (fillVisible) {\n // context.closePath();\n context.setCommonStyle(arc, arc.attribute, x, y, arcAttribute);\n context.fillStyle = lastColor as string;\n context.fill();\n }\n }\n }\n if (doStroke) {\n if (strokeCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n // context.strokeStyle = 'red';\n context.stroke();\n }\n }\n }\n }\n\n this.afterRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n if (tempChangeConicalColor) {\n (fill as IConicalGradient).startAngle += conicalOffset;\n (fill as IConicalGradient).endAngle += conicalOffset;\n }\n }\n\n draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const arcAttribute = getTheme(arc, params?.theme).arc;\n this._draw(arc, arcAttribute, false, drawContext, params);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/arc-render.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAsG;AACtG,mEAA2E;AAC3E,kDAAkD;AAClD,iDAAoD;AAEpD,iFAA6E;AAiB7E,mCASiB;AACjB,uEAAsE;AACtE,yDAAkE;AAElE,0DAA6D;AAC7D,+CAA2C;AAmBpC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,wBAAgB;IAI1D,YAGqB,sBAAqE;QAExF,KAAK,EAAE,CAAC;QAFW,2BAAsB,GAAtB,sBAAsB,CAA+C;QAL1F,eAAU,GAAW,2BAAe,CAAC;QAQnC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;IAGD,kBAAkB,CAChB,GAAS,EACT,OAA6B,EAC7B,EAAU,EACV,EAAU,EACV,WAAmB,EACnB,WAAmB,EACnB,GAAW,EACX,GAAW;QAEX,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,QAAQ,GAAG,GAAG,CAAC;QACf,MAAM,UAAU,GAAG,IAAA,YAAG,EAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAY,QAAQ,GAAG,UAAU,CAAC;QACjD,IAAI,eAAe,GAAY,KAAK,CAAC;QAErC,IAAI,WAAW,GAAG,WAAW,EAAE;YAC7B,MAAM,IAAI,GAAG,WAAW,CAAC;YACzB,WAAW,GAAG,WAAW,CAAC;YAC1B,WAAW,GAAG,IAAI,CAAC;SACpB;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAEjD,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,GACxG,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE7C,MAAM,sBAAsB,GAAG,YAAY,CAAC;QAC5C,MAAM,oBAAoB,GAAG,YAAY,CAAC;QAC1C,MAAM,oBAAoB,GAAG,YAAY,CAAC;QAC1C,MAAM,sBAAsB,GAAG,YAAY,CAAC;QAC5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QACpF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QACpF,IAAI,UAAU,GAAG,oBAAoB,CAAC;QACtC,IAAI,UAAU,GAAG,oBAAoB,CAAC;QAEtC,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;QAG9C,IAAI,IAAY,CAAC;QACjB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAY,CAAC;QAEjB,IAAI,oBAAoB,GAAG,gBAAO,IAAI,oBAAoB,GAAG,gBAAO,EAAE;YACpE,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;YACxC,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;YACxC,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;YAG1C,IAAI,UAAU,GAAG,WAAE,EAAE;gBACnB,MAAM,EAAE,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAErE,IAAI,EAAE,EAAE;oBACN,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAA,YAAG,EAAC,IAAA,aAAI,EAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAA,aAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxG,MAAM,EAAE,GAAG,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE/C,UAAU,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtE,UAAU,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;iBACvE;aACF;SACF;QAED,IAAI,UAAU,GAAG,gBAAO,EAAE;YACxB,MAAM,iBAAiB,GAAG,IAAA,YAAG,EAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACrG,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAGnG,IAAI,UAAU,GAAG,oBAAoB,IAAI,iBAAiB,KAAK,eAAe,EAAE;gBAC9E,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;aAC3G;iBAAM;gBACL,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;gBACtC,MAAM,EAAE,GAAG,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrD,eAAe,GAAG,CAAC;oBACjB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,eAAe,EACf,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;aACL;SACF;aAAM;YACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;SACtC;QAYD,IAAI,CAAC,CAAC,WAAW,GAAG,gBAAO,CAAC,IAAI,eAAe,GAAG,KAAK,EAAE;YACvD,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;YACrC,eAAe,GAAG,IAAI,CAAC;SACxB;aAAM,IAAI,UAAU,GAAG,gBAAO,EAAE;YAC/B,MAAM,iBAAiB,GAAG,IAAA,YAAG,EAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACpG,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAGzD,IAAI,UAAU,GAAG,oBAAoB,IAAI,iBAAiB,KAAK,eAAe,EAAE;gBAC9E,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;aACjG;iBAAM;gBACL,eAAe,GAAG,CAAC;oBACjB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,eAAe,EACf,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;gBACJ,MAAM,EAAE,GAAG,IAAA,cAAK,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;aACrD;SACF;aAAM;YACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC,CAAC;SAClG;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,SAAS,CACP,GAAS,EACT,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;QAGZ,MAAM,YAAY,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,GAAG,CAAC;QACtD,MAAM,EACJ,IAAI,GAAG,YAAY,CAAC,IAAI,EACxB,MAAM,GAAG,YAAY,CAAC,MAAM,EAC5B,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC,EAC3B,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC,EAC5B,GAAG,GAAG,CAAC,SAAS,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEtD,MAAM,EACJ,WAAW,GAAG,YAAY,CAAC,WAAW,EACtC,WAAW,GAAG,YAAY,CAAC,WAAW,EACtC,GAAG,GAAG,YAAY,CAAC,GAAG,EACtB,YAAY,GAAG,YAAY,CAAC,YAAY,EACzC,GAAG,GAAG,CAAC,SAAS,CAAC;QAElB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,sBAAsB,GAC1B,CAAC,CAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAK,IAAuB,CAAC,QAAQ,KAAK,SAAS,CAAC;QACzF,IAAI,sBAAsB,EAAE;YAC1B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAC1D,IAAI,IAAA,YAAG,EAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,YAAG,GAAG,gBAAO,EAAE;gBAC9C,aAAa,GAAG,EAAE,IAAI,CAAC,CAAC;gBACvB,IAAyB,CAAC,UAAU,IAAI,aAAa,CAAC;gBACtD,IAAyB,CAAC,QAAQ,IAAI,aAAa,CAAC;aACtD;SACF;QAED,IAAI,8BAA8B,GAAG,KAAK,CAAC;QAC3C,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC;QAClE,IAAI,MAAM,IAAI,YAAY,EAAE;YAC1B,OAAO,CAAC,SAAS,EAAE,CAAC;YAYpB,IAAA,mBAAW,EAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAE1D,8BAA8B,GAAG,IAAI,CAAC;YAEtC,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7F,IAAI,CAAC,gBAAgB,CACnB,GAAG,EACH,OAAO,EACP,CAAC,EACD,CAAC,EACD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,CACT,CAAC;YAEF,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;iBAC9C;qBAAM,IAAI,QAAQ,EAAE;oBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;oBACnF,OAAO,CAAC,IAAI,EAAE,CAAC;iBAChB;aACF;YAED,IAAI,QAAQ,IAAI,YAAY,EAAE;gBAC5B,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;iBAChD;qBAAM,IAAI,QAAQ,EAAE;oBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;oBACnF,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClB;aACF;SACF;QAGD,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE;YAC7B,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAE/F,IAAI,CAAC,8BAA8B,EAAE;gBACnC,IAAI,CAAC,gBAAgB,CACnB,GAAG,EACH,OAAO,EACP,CAAC,EACD,CAAC,EACD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,CACT,CAAC;aACH;YAED,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;aAChD;iBAAM,IAAI,QAAQ,EAAE;gBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC/D,OAAO,CAAC,MAAM,EAAE,CAAC;aAClB;SACF;QAGD,IAAI,CAAC,CAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE;YACvD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAA,YAAG,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,UAAU,IAAI,YAAG,GAAG,gBAAO,EAAE;gBAC/B,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEzD,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;gBACxC,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;gBACrF,MAAM,UAAU,GAAG,QAAQ,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;gBAEzG,IAAI,CAAC,8BAA8B,EAAE;oBACnC,IAAI,CAAC,gBAAgB,CACnB,GAAG,EACH,OAAO,EACP,CAAC,EACD,CAAC,EACD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,CACT,CAAC;iBACH;gBAED,IAAI,MAAM,EAAE;oBAEV,MAAM,KAAK,GAAG,IAAI,CAAC;oBACnB,IAAK,KAAwB,CAAC,QAAQ,KAAK,SAAS,EAAE;wBACpD,MAAM,SAAS,GAAG,IAAA,qCAAkB,EAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAY,CAAC,CAAC;wBACnE,IAAI,MAAM,EAAE;yBAEX;6BAAM,IAAI,mBAAW,EAAE;4BAEtB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;4BAC/D,OAAO,CAAC,SAAS,GAAG,SAAmB,CAAC;4BACxC,OAAO,CAAC,IAAI,EAAE,CAAC;yBAChB;qBACF;iBACF;gBACD,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,EAAE;qBAEb;yBAAM,IAAI,QAAQ,EAAE;wBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;wBAE/D,OAAO,CAAC,MAAM,EAAE,CAAC;qBAClB;iBACF;aACF;SACF;QAED,IAAI,CAAC,eAAe,CAClB,GAAG,EACH,OAAO,EACP,CAAC,EACD,CAAC,EACD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,CACT,CAAC;QAEF,IAAI,sBAAsB,EAAE;YACzB,IAAyB,CAAC,UAAU,IAAI,aAAa,CAAC;YACtD,IAAyB,CAAC,QAAQ,IAAI,aAAa,CAAC;SACtD;IACH,CAAC;IAED,IAAI,CAAC,GAAS,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QACzG,MAAM,YAAY,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,GAAG,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AA7XY,sBAAsB;IADlC,IAAA,2BAAU,GAAE;IAMR,WAAA,IAAA,uBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,sBAAK,EAAC,iCAAqB,CAAC,CAAA;;GANpB,sBAAsB,CA6XlC;AA7XY,wDAAsB","file":"arc-render.js","sourcesContent":["import { abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2, isBoolean } from '@visactor/vutils';\nimport { inject, injectable, named } from '../../../common/inversify-lite';\nimport { getTheme } from '../../../graphic/theme';\nimport { parseStroke } from '../../../common/utils';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport type {\n IContext2d,\n IArc,\n IPath2D,\n IGraphicAttribute,\n IMarkAttribute,\n IThemeAttribute,\n IGradientColor,\n IArcRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IConicalGradient\n} from '../../../interface';\nimport {\n cornerTangents,\n drawArcPath,\n drawPathProxy,\n fillVisible,\n intersect,\n runFill,\n runStroke,\n strokeVisible\n} from './utils';\nimport { getConicGradientAt } from '../../../canvas/conical-gradient';\nimport { ArcRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime } from '../../../common/enums';\nimport { ARC_NUMBER_TYPE } from '../../../graphic/constants';\nimport { BaseRender } from './base-render';\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@injectable()\nexport class DefaultCanvasArcRender extends BaseRender<IArc> implements IGraphicRender {\n type: 'arc';\n numberType: number = ARC_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(ArcRenderContribution)\n protected readonly arcRenderContribitions: IContributionProvider<IArcRenderContribution>\n ) {\n super();\n this.init(arcRenderContribitions);\n }\n\n // 绘制尾部cap\n drawArcTailCapPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n _sa: number,\n _ea: number\n ) {\n const capAngle = _ea - _sa;\n const data = arc.getParsedAngle();\n const startAngle = data.startAngle;\n let endAngle = data.endAngle;\n endAngle = _ea;\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n\n const cornerRadius = arc.getParsedCornerRadius();\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadius;\n const outerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusStart = cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n const a1 = endAngle - capAngle - 0.03;\n const a2 = atan2(t1.y11, t1.x11);\n context.arc(cx, cy, outerRadius, a1, a2, !clockwise);\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n }\n } else {\n context.moveTo(cx + xors, cy + yors);\n }\n // else {\n // // Or is the outer ring just a circular arc?\n // if (!partStroke || partStroke[0]) {\n // context.moveTo(cx + xors, cy + yors);\n // context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n // } else {\n // // context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + yore);\n // }\n // }\n // // Is there no inner ring, and it’s a circular sector?\n // // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n context.lineTo(cx + xire, cy + yire);\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n const a1 = atan2(t0.cy + t0.y11, t0.cx + t0.x11);\n const a2 = endAngle - capAngle - 0.03;\n context.arc(cx, cy, innerRadius, a1, a2, clockwise);\n }\n } else {\n context.lineTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n\n return collapsedToLine;\n }\n\n drawShape(\n arc: IArc,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n const {\n fill = arcAttribute.fill,\n stroke = arcAttribute.stroke,\n x: originX = arcAttribute.x,\n y: originY = arcAttribute.y\n } = arc.attribute;\n const data = this.valid(arc, arcAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { fVisible, sVisible, doFill, doStroke } = data;\n\n const {\n outerRadius = arcAttribute.outerRadius,\n innerRadius = arcAttribute.innerRadius,\n cap = arcAttribute.cap,\n forceShowCap = arcAttribute.forceShowCap\n } = arc.attribute;\n // 判断是否是环形渐变,且有头部cap,那就偏移渐变色角度\n let conicalOffset = 0;\n const tempChangeConicalColor =\n ((isBoolean(cap) && cap) || cap[0]) && (fill as IGradientColor).gradient === 'conical';\n if (tempChangeConicalColor) {\n const { sc, startAngle, endAngle } = arc.getParsedAngle();\n if (abs(endAngle - startAngle) < pi2 - epsilon) {\n conicalOffset = sc || 0;\n (fill as IConicalGradient).startAngle -= conicalOffset;\n (fill as IConicalGradient).endAngle -= conicalOffset;\n }\n }\n\n let beforeRenderContribitionsRuned = false;\n const { isFullStroke, stroke: arrayStroke } = parseStroke(stroke);\n if (doFill || isFullStroke) {\n context.beginPath();\n // if (arc.shouldUpdateShape()) {\n // // 更新shape\n // arc.cache = new Path2D(context);\n // this.drawArcPath(arc, arc.cache, x, y, outerRadius, innerRadius);\n // arc.clearUpdateShapeTag();\n // } else {\n // if (arc.cache) {\n // renderCommandList(arc.cache.commandList, context);\n // }\n // }\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此arc不再使用cache\n drawArcPath(arc, context, x, y, outerRadius, innerRadius);\n\n beforeRenderContribitionsRuned = true;\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(arc, arc.attribute, arcAttribute);\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n if (doFill) {\n if (fillCb) {\n fillCb(context, arc.attribute, arcAttribute);\n } else if (fVisible) {\n context.setCommonStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.fill();\n }\n }\n\n if (doStroke && isFullStroke) {\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.stroke();\n }\n }\n }\n\n // 需要局部渲染描边的时候\n if (!isFullStroke && doStroke) {\n context.beginPath();\n const collapsedToLine = drawArcPath(arc, context, x, y, outerRadius, innerRadius, arrayStroke);\n\n if (!beforeRenderContribitionsRuned) {\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n context.stroke();\n }\n }\n\n // 绘制cap\n if (((isBoolean(cap) && cap) || cap[1]) && forceShowCap) {\n const { startAngle: sa, endAngle: ea } = arc.getParsedAngle();\n const deltaAngle = abs(ea - sa);\n if (deltaAngle >= pi2 - epsilon) {\n context.beginPath();\n const capWidth = Math.abs(outerRadius - innerRadius) / 2;\n // 以外边界长度为准\n const capAngle = capWidth / outerRadius;\n const { endAngle = arcAttribute.endAngle, fill = arcAttribute.fill } = arc.attribute;\n const startAngle = endAngle;\n this.drawArcTailCapPath(arc, context, x, y, outerRadius, innerRadius, startAngle, startAngle + capAngle);\n\n if (!beforeRenderContribitionsRuned) {\n this.beforeRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n if (doFill) {\n // 获取渐变色最后一个颜色\n const color = fill;\n if ((color as IGradientColor).gradient === 'conical') {\n const lastColor = getConicGradientAt(0, 0, endAngle, color as any);\n if (fillCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (fillVisible) {\n // context.closePath();\n context.setCommonStyle(arc, arc.attribute, x, y, arcAttribute);\n context.fillStyle = lastColor as string;\n context.fill();\n }\n }\n }\n if (doStroke) {\n if (strokeCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n // context.strokeStyle = 'red';\n context.stroke();\n }\n }\n }\n }\n\n this.afterRenderStep(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n if (tempChangeConicalColor) {\n (fill as IConicalGradient).startAngle += conicalOffset;\n (fill as IConicalGradient).endAngle += conicalOffset;\n }\n }\n\n draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const arcAttribute = getTheme(arc, params?.theme).arc;\n this._draw(arc, arcAttribute, false, drawContext, params);\n }\n}\n"]}
|
|
@@ -5,7 +5,6 @@ export declare class DefaultCanvasAreaRender extends BaseRender<IArea> implement
|
|
|
5
5
|
type: 'area';
|
|
6
6
|
numberType: number;
|
|
7
7
|
constructor(areaRenderContribitions: IContributionProvider<IAreaRenderContribution>);
|
|
8
|
-
drawLinearAreaHighPerformance(area: IArea, context: IContext2d, fill: boolean, stroke: boolean, fillOpacity: number, strokeOpacity: number, offsetX: number, offsetY: number, areaAttribute: Required<IAreaGraphicAttribute>, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
|
|
9
8
|
drawShape(area: IArea, context: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
|
|
10
9
|
draw(area: IArea, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
|
|
11
10
|
protected drawSegmentItem(context: IContext2d, cache: IAreaCacheItem, fill: boolean, fillOpacity: number, stroke: boolean, strokeOpacity: number, attribute: Partial<IAreaGraphicAttribute>, defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[], clipRange: number, offsetX: number, offsetY: number, offsetZ: number, area: IArea, drawContext: IDrawContext, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute | IThemeAttribute[]) => boolean, strokeCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute | IThemeAttribute[]) => boolean): boolean;
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasAreaRender = void 0;
|
|
18
18
|
|
|
19
|
-
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../../../common/inversify-lite"), contribution_provider_1 = require("../../../common/contribution-provider"), segment_1 = require("../../../common/segment"), theme_1 = require("../../../graphic/theme"), constants_1 = require("./contributions/constants"), enums_1 = require("../../../common/enums"), render_area_1 = require("../../../common/render-area"), constants_2 = require("../../../graphic/constants"), render_curve_1 = require("../../../common/render-curve"), base_render_1 = require("./base-render")
|
|
19
|
+
const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../../../common/inversify-lite"), contribution_provider_1 = require("../../../common/contribution-provider"), segment_1 = require("../../../common/segment"), theme_1 = require("../../../graphic/theme"), constants_1 = require("./contributions/constants"), enums_1 = require("../../../common/enums"), render_area_1 = require("../../../common/render-area"), constants_2 = require("../../../graphic/constants"), render_curve_1 = require("../../../common/render-curve"), base_render_1 = require("./base-render");
|
|
20
20
|
|
|
21
21
|
function calcLineCache(points, curveType, params) {
|
|
22
22
|
switch (curveType) {
|
|
@@ -50,55 +50,17 @@ function calcLineCache(points, curveType, params) {
|
|
|
50
50
|
let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
|
|
51
51
|
constructor(areaRenderContribitions) {
|
|
52
52
|
super(), this.areaRenderContribitions = areaRenderContribitions, this.numberType = constants_2.AREA_NUMBER_TYPE,
|
|
53
|
-
this.builtinContributions = [ area_contribution_render_1.defaultAreaTextureRenderContribution, area_contribution_render_1.defaultAreaBackgroundRenderContribution ],
|
|
54
53
|
this.init(areaRenderContribitions);
|
|
55
54
|
}
|
|
56
|
-
drawLinearAreaHighPerformance(area, context, fill, stroke, fillOpacity, strokeOpacity, offsetX, offsetY, areaAttribute, drawContext, params, fillCb, strokeCb) {
|
|
57
|
-
var _a, _b, _c, _d, _e;
|
|
58
|
-
context.beginPath();
|
|
59
|
-
const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, {points: points} = area.attribute, startP = points[0];
|
|
60
|
-
context.moveTo(startP.x, startP.y, z);
|
|
61
|
-
for (let i = 1; i < points.length; i++) {
|
|
62
|
-
const p = points[i];
|
|
63
|
-
context.lineTo(p.x, p.y, z);
|
|
64
|
-
}
|
|
65
|
-
for (let i = points.length - 1; i >= 0; i--) {
|
|
66
|
-
const p = points[i];
|
|
67
|
-
context.lineTo(null !== (_b = p.x1) && void 0 !== _b ? _b : p.x, null !== (_c = p.y1) && void 0 !== _c ? _c : p.y, z);
|
|
68
|
-
}
|
|
69
|
-
context.closePath(), context.setShadowBlendStyle && context.setShadowBlendStyle(area, area.attribute, areaAttribute);
|
|
70
|
-
const {x: originX = 0, x: originY = 0} = area.attribute;
|
|
71
|
-
if (!1 !== fill && (fillCb ? fillCb(context, area.attribute, areaAttribute) : fillOpacity && (context.setCommonStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute),
|
|
72
|
-
context.fill())), stroke) {
|
|
73
|
-
const {stroke: stroke = areaAttribute && areaAttribute.stroke} = area.attribute;
|
|
74
|
-
if ((0, vutils_1.isArray)(stroke) && (stroke[0] || stroke[2]) && !1 === stroke[1]) if (context.beginPath(),
|
|
75
|
-
stroke[0]) {
|
|
76
|
-
context.moveTo(startP.x, startP.y, z);
|
|
77
|
-
for (let i = 1; i < points.length; i++) {
|
|
78
|
-
const p = points[i];
|
|
79
|
-
context.lineTo(p.x, p.y, z);
|
|
80
|
-
}
|
|
81
|
-
} else if (stroke[2]) {
|
|
82
|
-
const endP = points[points.length - 1];
|
|
83
|
-
context.moveTo(endP.x, endP.y, z);
|
|
84
|
-
for (let i = points.length - 2; i >= 0; i--) {
|
|
85
|
-
const p = points[i];
|
|
86
|
-
context.lineTo(null !== (_d = p.x1) && void 0 !== _d ? _d : p.x, null !== (_e = p.y1) && void 0 !== _e ? _e : p.y, z);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
context.setStrokeStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute),
|
|
90
|
-
context.stroke();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
55
|
drawShape(area, context, x, y, drawContext, params, fillCb, strokeCb) {
|
|
94
56
|
var _a, _b, _c, _d, _e, _f;
|
|
95
|
-
const areaAttribute = (0, theme_1.getTheme)(area, null == params ? void 0 : params.theme).area, {
|
|
57
|
+
const areaAttribute = (0, theme_1.getTheme)(area, null == params ? void 0 : params.theme).area, {fillOpacity: fillOpacity = areaAttribute.fillOpacity, z: z = areaAttribute.z, strokeOpacity: strokeOpacity = areaAttribute.strokeOpacity} = area.attribute, data = this.valid(area, areaAttribute, fillCb, strokeCb);
|
|
96
58
|
if (!data) return;
|
|
97
|
-
const {doFill: doFill, doStroke: doStroke} = data, {clipRange: clipRange = areaAttribute.clipRange
|
|
98
|
-
let {curveType: curveType = areaAttribute.curveType} = area.attribute;
|
|
99
|
-
if (closePath && "linear" === curveType && (curveType = "linearClosed"), 1 === clipRange && !segments && !points.some((p => !1 === p.defined)) && "linear" === curveType) return this.drawLinearAreaHighPerformance(area, context, !!fill, doStroke, fillOpacity, strokeOpacity, x, y, areaAttribute, drawContext, params, fillCb, strokeCb);
|
|
59
|
+
const {doFill: doFill, doStroke: doStroke} = data, {clipRange: clipRange = areaAttribute.clipRange} = area.attribute;
|
|
100
60
|
if (area.shouldUpdateShape()) {
|
|
101
|
-
|
|
61
|
+
const {points: points, segments: segments, closePath: closePath} = area.attribute;
|
|
62
|
+
let {curveType: curveType = areaAttribute.curveType} = area.attribute;
|
|
63
|
+
if (closePath && "linear" === curveType && (curveType = "linearClosed"), segments && segments.length) {
|
|
102
64
|
let startPoint, lastTopSeg;
|
|
103
65
|
const topCaches = segments.map(((seg, index) => {
|
|
104
66
|
if (seg.points.length <= 1 && 0 === index) return seg.points[0] && (lastTopSeg = {
|