@visactor/vrender-core 0.19.13-alpha.1 → 0.20.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/allocator/bounds-allocate.js.map +1 -1
- package/cjs/animate/config.js +2 -1
- package/cjs/animate/custom-animate.js +1 -2
- package/cjs/common/Reflect-metadata.js +2 -1
- package/cjs/common/bezier-utils.js +1 -2
- package/cjs/common/render-curve.js +2 -1
- package/cjs/common/render-utils.js +1 -2
- package/cjs/common/seg-context.js.map +1 -1
- package/cjs/common/segment/index.d.ts +2 -4
- package/cjs/common/segment/index.js.map +1 -1
- package/cjs/common/utils.js +1 -1
- package/cjs/core/camera.d.ts +1 -0
- package/cjs/core/camera.js +8 -2
- package/cjs/core/camera.js.map +1 -1
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/light.d.ts +1 -0
- package/cjs/core/light.js +8 -2
- package/cjs/core/light.js.map +1 -1
- package/cjs/core/stage.d.ts +1 -1
- package/cjs/core/stage.js +16 -7
- package/cjs/core/stage.js.map +1 -1
- package/cjs/factory.d.ts +5 -0
- package/cjs/factory.js +17 -0
- package/cjs/factory.js.map +1 -0
- package/cjs/graphic/arc.d.ts +1 -2
- package/cjs/graphic/arc.js +0 -3
- package/cjs/graphic/arc.js.map +1 -1
- package/cjs/graphic/area.d.ts +1 -2
- package/cjs/graphic/area.js +0 -3
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/circle.d.ts +1 -2
- package/cjs/graphic/circle.js +0 -3
- package/cjs/graphic/circle.js.map +1 -1
- package/cjs/graphic/glyph.d.ts +1 -2
- package/cjs/graphic/glyph.js +0 -3
- package/cjs/graphic/glyph.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +1 -4
- package/cjs/graphic/graphic.js +0 -3
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.d.ts +1 -2
- package/cjs/graphic/group.js +0 -3
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/image.d.ts +1 -2
- package/cjs/graphic/image.js +0 -3
- package/cjs/graphic/image.js.map +1 -1
- package/cjs/graphic/index.js.map +1 -1
- package/cjs/graphic/line.d.ts +1 -2
- package/cjs/graphic/line.js +0 -3
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/path.d.ts +1 -2
- package/cjs/graphic/path.js +0 -3
- package/cjs/graphic/path.js.map +1 -1
- package/cjs/graphic/polygon.d.ts +1 -2
- package/cjs/graphic/polygon.js +0 -3
- package/cjs/graphic/polygon.js.map +1 -1
- package/cjs/graphic/rect.d.ts +1 -2
- package/cjs/graphic/rect.js +0 -3
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +2 -3
- package/cjs/graphic/richtext.js +2 -5
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/symbol.d.ts +0 -2
- package/cjs/graphic/symbol.js +0 -3
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.d.ts +1 -2
- package/cjs/graphic/text.js +0 -3
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/index.d.ts +5 -1
- package/cjs/index.js +19 -16
- package/cjs/index.js.map +1 -1
- package/cjs/interface/graphic.d.ts +1 -2
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/picker/picker-service.js +8 -7
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +2 -2
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +11 -5
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +8 -2
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +4 -32
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.js +7 -7
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js +14 -30
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js +11 -22
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -24
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +10 -21
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.js +4 -4
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.js +7 -7
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +8 -7
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.js +4 -4
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/text-render.d.ts +3 -2
- package/cjs/render/contributions/render/text-render.js +13 -32
- package/cjs/render/contributions/render/text-render.js.map +1 -1
- package/dist/index.es.js +11412 -12020
- package/es/allocator/bounds-allocate.js.map +1 -1
- package/es/animate/config.js +2 -1
- package/es/animate/custom-animate.js +1 -2
- package/es/common/Reflect-metadata.js +2 -1
- package/es/common/bezier-utils.js +1 -2
- package/es/common/render-curve.js +2 -1
- package/es/common/render-utils.js +1 -2
- package/es/common/seg-context.js.map +1 -1
- package/es/common/segment/index.d.ts +2 -4
- package/es/common/segment/index.js.map +1 -1
- package/es/common/utils.js +1 -1
- package/es/core/camera.d.ts +1 -0
- package/es/core/camera.js +6 -0
- package/es/core/camera.js.map +1 -1
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/light.d.ts +1 -0
- package/es/core/light.js +6 -0
- package/es/core/light.js.map +1 -1
- package/es/core/stage.d.ts +1 -1
- package/es/core/stage.js +17 -12
- package/es/core/stage.js.map +1 -1
- package/es/factory.d.ts +5 -0
- package/es/factory.js +11 -0
- package/es/factory.js.map +1 -0
- package/es/graphic/arc.d.ts +1 -2
- package/es/graphic/arc.js +0 -3
- package/es/graphic/arc.js.map +1 -1
- package/es/graphic/area.d.ts +1 -2
- package/es/graphic/area.js +0 -3
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/circle.d.ts +1 -2
- package/es/graphic/circle.js +0 -3
- package/es/graphic/circle.js.map +1 -1
- package/es/graphic/glyph.d.ts +1 -2
- package/es/graphic/glyph.js +0 -3
- package/es/graphic/glyph.js.map +1 -1
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic.d.ts +1 -4
- package/es/graphic/graphic.js +0 -3
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.d.ts +1 -2
- package/es/graphic/group.js +0 -3
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/image.d.ts +1 -2
- package/es/graphic/image.js +0 -3
- package/es/graphic/image.js.map +1 -1
- package/es/graphic/index.js.map +1 -1
- package/es/graphic/line.d.ts +1 -2
- package/es/graphic/line.js +0 -3
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/path.d.ts +1 -2
- package/es/graphic/path.js +0 -3
- package/es/graphic/path.js.map +1 -1
- package/es/graphic/polygon.d.ts +1 -2
- package/es/graphic/polygon.js +0 -3
- package/es/graphic/polygon.js.map +1 -1
- package/es/graphic/rect.d.ts +1 -2
- package/es/graphic/rect.js +0 -3
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/richtext.d.ts +2 -3
- package/es/graphic/richtext.js +2 -5
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/symbol.d.ts +0 -2
- package/es/graphic/symbol.js +0 -3
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.d.ts +1 -2
- package/es/graphic/text.js +0 -3
- package/es/graphic/text.js.map +1 -1
- package/es/index.d.ts +5 -1
- package/es/index.js +10 -2
- package/es/index.js.map +1 -1
- package/es/interface/graphic.d.ts +1 -2
- package/es/interface/graphic.js.map +1 -1
- package/es/picker/picker-service.js +5 -1
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.js +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.d.ts +1 -0
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +9 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/react-attribute-plugin.d.ts +1 -0
- package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -0
- package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/es/render/contributions/render/area-render.js +1 -30
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.js +1 -1
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/contributions/arc-contribution-render.js +13 -28
- package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.js +10 -20
- package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +10 -20
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +9 -19
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.js +1 -1
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.js +5 -3
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/group-render.js +3 -1
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.js +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/text-render.d.ts +3 -2
- package/es/render/contributions/render/text-render.js +11 -30
- package/es/render/contributions/render/text-render.js.map +1 -1
- package/package.json +1 -1
- package/cjs/allocator/allocator-modules.d.ts +0 -1
- package/cjs/allocator/allocator-modules.js +0 -1
- package/cjs/allocator/allocator-modules.js.map +0 -1
- package/cjs/allocator/point-allocate.d.ts +0 -1
- package/cjs/allocator/point-allocate.js +0 -1
- package/cjs/allocator/point-allocate.js.map +0 -1
- package/cjs/graphic/graphic-service/arc-contribution.d.ts +0 -1
- package/cjs/graphic/graphic-service/arc-contribution.js +0 -3
- package/cjs/graphic/graphic-service/arc-contribution.js.map +0 -1
- package/cjs/graphic/graphic-service/area-contribution.d.ts +0 -1
- package/cjs/graphic/graphic-service/area-contribution.js +0 -3
- package/cjs/graphic/graphic-service/area-contribution.js.map +0 -1
- package/cjs/graphic/graphic-service/circle-contribution.d.ts +0 -1
- package/cjs/graphic/graphic-service/circle-contribution.js +0 -3
- package/cjs/graphic/graphic-service/circle-contribution.js.map +0 -1
- package/cjs/graphic/graphic-service/default-theme.d.ts +0 -1
- package/cjs/graphic/graphic-service/default-theme.js +0 -3
- package/cjs/graphic/graphic-service/default-theme.js.map +0 -1
- package/cjs/graphic/graphic-service/path-contribution.d.ts +0 -1
- package/cjs/graphic/graphic-service/path-contribution.js +0 -3
- package/cjs/graphic/graphic-service/path-contribution.js.map +0 -1
- package/cjs/graphic/graphic-service/rect-contribution.d.ts +0 -1
- package/cjs/graphic/graphic-service/rect-contribution.js +0 -3
- package/cjs/graphic/graphic-service/rect-contribution.js.map +0 -1
- package/cjs/interface/util.d.ts +0 -1
- package/cjs/interface/util.js +0 -3
- package/cjs/interface/util.js.map +0 -1
- package/cjs/plugins/builtin-plugin/edit-module.d.ts +0 -21
- package/cjs/plugins/builtin-plugin/edit-module.js +0 -81
- package/cjs/plugins/builtin-plugin/edit-module.js.map +0 -1
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +0 -52
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +0 -279
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +0 -1
- package/es/allocator/allocator-modules.d.ts +0 -1
- package/es/allocator/allocator-modules.js +0 -1
- package/es/allocator/allocator-modules.js.map +0 -1
- package/es/allocator/point-allocate.d.ts +0 -1
- package/es/allocator/point-allocate.js +0 -1
- package/es/allocator/point-allocate.js.map +0 -1
- package/es/graphic/graphic-service/arc-contribution.d.ts +0 -1
- package/es/graphic/graphic-service/arc-contribution.js +0 -3
- package/es/graphic/graphic-service/arc-contribution.js.map +0 -1
- package/es/graphic/graphic-service/area-contribution.d.ts +0 -1
- package/es/graphic/graphic-service/area-contribution.js +0 -3
- package/es/graphic/graphic-service/area-contribution.js.map +0 -1
- package/es/graphic/graphic-service/circle-contribution.d.ts +0 -1
- package/es/graphic/graphic-service/circle-contribution.js +0 -3
- package/es/graphic/graphic-service/circle-contribution.js.map +0 -1
- package/es/graphic/graphic-service/default-theme.d.ts +0 -1
- package/es/graphic/graphic-service/default-theme.js +0 -3
- package/es/graphic/graphic-service/default-theme.js.map +0 -1
- package/es/graphic/graphic-service/path-contribution.d.ts +0 -1
- package/es/graphic/graphic-service/path-contribution.js +0 -3
- package/es/graphic/graphic-service/path-contribution.js.map +0 -1
- package/es/graphic/graphic-service/rect-contribution.d.ts +0 -1
- package/es/graphic/graphic-service/rect-contribution.js +0 -3
- package/es/graphic/graphic-service/rect-contribution.js.map +0 -1
- package/es/interface/util.d.ts +0 -1
- package/es/interface/util.js +0 -3
- package/es/interface/util.js.map +0 -1
- package/es/plugins/builtin-plugin/edit-module.d.ts +0 -21
- package/es/plugins/builtin-plugin/edit-module.js +0 -73
- package/es/plugins/builtin-plugin/edit-module.js.map +0 -1
- package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +0 -52
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js +0 -276
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/allocator/bounds-allocate.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAGjC,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE3D,MAAa,qBAAqB;IAEhC;QADU,UAAK,GAAkB,EAAE,CAAC;QAGlC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,mBAAU,EAAE,CAAC,CAAC;SACnC;IACH,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,mBAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAClD;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IACD,aAAa,CAAC,CAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,mBAAU,CAAC,CAAQ,CAAC,CAAC;SACjC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAS,CAAC;QACnC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,CAAc;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAvCD,sDAuCC;AAEY,QAAA,cAAc,GAAG,IAAI,qBAAqB,EAAE,CAAC","file":"bounds-allocate.js","sourcesContent":["import type { IAABBBounds
|
|
1
|
+
{"version":3,"sources":["../src/allocator/bounds-allocate.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAGjC,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE3D,MAAa,qBAAqB;IAEhC;QADU,UAAK,GAAkB,EAAE,CAAC;QAGlC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,mBAAU,EAAE,CAAC,CAAC;SACnC;IACH,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,mBAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAClD;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IACD,aAAa,CAAC,CAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,mBAAU,CAAC,CAAQ,CAAC,CAAC;SACjC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAS,CAAC;QACnC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,CAAc;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAvCD,sDAuCC;AAEY,QAAA,cAAc,GAAG,IAAI,qBAAqB,EAAE,CAAC","file":"bounds-allocate.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { Releaseable, IAllocate } from '../interface';\n\nexport const BoundsAllocate = Symbol.for('BoundsAllocate');\n\nexport class DefaultBoundsAllocate implements IAllocate<IAABBBounds>, Releaseable {\n protected pools: IAABBBounds[] = [];\n constructor() {\n // 默认添加10个\n for (let i = 0; i < 10; i++) {\n this.pools.push(new AABBBounds());\n }\n }\n allocate(x1: number, y1: number, x2: number, y2: number): IAABBBounds {\n if (!this.pools.length) {\n return new AABBBounds().setValue(x1, y1, x2, y2);\n }\n const b = this.pools.pop();\n b.x1 = x1;\n b.y1 = y1;\n b.x2 = x2;\n b.y2 = y2;\n return b;\n }\n allocateByObj(b: IAABBBounds): IAABBBounds {\n if (!this.pools.length) {\n return new AABBBounds(b as any);\n }\n const _b = this.pools.pop() as any;\n _b.x1 = b.x1;\n _b.y1 = b.y1;\n _b.x2 = b.x2;\n _b.y2 = b.y2;\n return _b;\n }\n free(b: IAABBBounds) {\n this.pools.push(b);\n }\n get length(): number {\n return this.pools.length;\n }\n release(...params: any): void {\n this.pools = [];\n }\n}\n\nexport const boundsAllocate = new DefaultBoundsAllocate();\n"]}
|
package/cjs/animate/config.js
CHANGED
|
@@ -31,5 +31,4 @@ function cubicPointAt(p0, p1, p2, p3, t) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
exports.snapLength = snapLength, exports.cubicLength = cubicLength, exports.cubicCalc = cubicCalc,
|
|
34
|
-
exports.cubicPointAt = cubicPointAt;
|
|
35
|
-
//# sourceMappingURL=bezier-utils.js.map
|
|
34
|
+
exports.cubicPointAt = cubicPointAt;
|
|
@@ -108,4 +108,5 @@ function drawIncrementalAreaSegments(path, lastSeg, segments, params) {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
exports.drawSegments = drawSegments, exports.drawIncrementalSegments = drawIncrementalSegments,
|
|
111
|
-
exports.drawIncrementalAreaSegments = drawIncrementalAreaSegments;
|
|
111
|
+
exports.drawIncrementalAreaSegments = drawIncrementalAreaSegments;
|
|
112
|
+
//# sourceMappingURL=render-curve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/seg-context.ts"],"names":[],"mappings":"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","file":"seg-context.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, Point } from '@visactor/vutils';\nimport type { ICubicBezierCurve, ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { CubicBezierCurve } from './segment/curve/cubic-bezier';\nimport { LineCurve } from './segment/curve/line';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n private _lastOriginP?: IPointLike;\n private _startOriginP?: IPointLike;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: IDirection;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: IDirection) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: IDirection) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n const curve: ICubicBezierCurve = new CubicBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(cp1x, cp1y),\n new Point(cp2x, cp2y),\n new Point(x, y)\n );\n curve.originP1 = this._lastOriginP;\n curve.originP2 = p;\n curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined, this._startOriginP);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n const curve = this.addLinearCurve(x, y, defined, this._lastOriginP, p);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n this._lastOriginP = p;\n this._startOriginP = p;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: IDirection): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean, p1: IPointLike, p2: IPointLike): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.originP1 = p1;\n curve.originP2 = p2;\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: IDirection): number {\n if (direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.y - endP.y);\n } else if (direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.x - endP.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined, p);\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n return super.lineTo(y, x, defined, p);\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n return super.moveTo(y, x, p);\n }\n clear() {\n return super.clear();\n }\n}\n\n// export class ReflectContextWrap implements IPath {\n// ctx: IPath;\n// constructor(path: IPath) {\n// this.ctx = path;\n// }\n\n// // @ts-ignore\n// arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void {\n// return this.ctx.arc(y, x, radius, startAngle, endAngle, counterclockwise);\n// }\n// // @ts-ignore\n// arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n// return this.ctx.arcTo(y1, x1, y2, x2, radius);\n// }\n// // @ts-ignore\n// bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n// return this.ctx.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x);\n// }\n// closePath(): void {\n// return this.ctx.closePath();\n// }\n// // @ts-ignore\n// ellipse(\n// x: number,\n// y: number,\n// radiusX: number,\n// radiusY: number,\n// rotation: number,\n// startAngle: number,\n// endAngle: number,\n// counterclockwise?: boolean\n// ): void {\n// return this.ctx.ellipse(y, x, radiusY, radiusX, rotation, startAngle, endAngle, counterclockwise);\n// }\n// lineTo(x: number, y: number): void {\n// return this.ctx.lineTo(y, x);\n// }\n// moveTo(x: number, y: number): void {\n// return this.ctx.moveTo(y, x);\n// }\n// // @ts-ignore\n// quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n// return this.ctx.quadraticCurveTo(cpy, cpx, y, x);\n// }\n// // @ts-ignore\n// rect(x: number, y: number, w: number, h: number): void {\n// return this.rect(y, x, w, h);\n// }\n// }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/seg-context.ts"],"names":[],"mappings":"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","file":"seg-context.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, Point } from '@visactor/vutils';\nimport type { ICubicBezierCurve, ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { CubicBezierCurve } from './segment/curve/cubic-bezier';\nimport { LineCurve } from './segment/curve/line';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n private _lastOriginP?: IPointLike;\n private _startOriginP?: IPointLike;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: IDirection;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: IDirection) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: IDirection) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n const curve: ICubicBezierCurve = new CubicBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(cp1x, cp1y),\n new Point(cp2x, cp2y),\n new Point(x, y)\n );\n curve.originP1 = this._lastOriginP;\n curve.originP2 = p;\n curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined, this._startOriginP);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n const curve = this.addLinearCurve(x, y, defined, this._lastOriginP, p);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n this._lastOriginP = p;\n this._startOriginP = p;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: IDirection): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean, p1: IPointLike, p2: IPointLike): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.originP1 = p1;\n curve.originP2 = p2;\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: IDirection): number {\n if (direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.y - endP.y);\n } else if (direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.x - endP.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined, p);\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n return super.lineTo(y, x, defined, p);\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n return super.moveTo(y, x, p);\n }\n clear() {\n return super.clear();\n }\n}\n"]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import type { IPointLike } from '@visactor/vutils';
|
|
2
|
-
import type { ICurveType, ISegPath2D } from '../../interface';
|
|
2
|
+
import type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';
|
|
3
3
|
export * from './linear';
|
|
4
4
|
export * from './linear-closed';
|
|
5
5
|
export * from './basis';
|
|
6
6
|
export * from './monotone';
|
|
7
7
|
export * from './step';
|
|
8
8
|
export * from './curve/curve-context';
|
|
9
|
-
export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?:
|
|
10
|
-
startPoint: IPointLike;
|
|
11
|
-
}): ISegPath2D | null;
|
|
9
|
+
export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: IGenSegmentParams): ISegPath2D | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAE1D,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAE1D,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAA0B;IAE1B,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AAzBD,sCAyBC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: IGenSegmentParams\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}
|
package/cjs/common/utils.js
CHANGED
package/cjs/core/camera.d.ts
CHANGED
package/cjs/core/camera.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.OrthoCamera = void 0;
|
|
5
|
+
}), exports.registerOrthoCamera = exports.OrthoCamera = void 0;
|
|
6
6
|
|
|
7
|
-
const matrix_allocate_1 = require("../allocator/matrix-allocate"), matrix_1 = require("../common/matrix");
|
|
7
|
+
const matrix_allocate_1 = require("../allocator/matrix-allocate"), matrix_1 = require("../common/matrix"), factory_1 = require("../factory");
|
|
8
8
|
|
|
9
9
|
class OrthoCamera {
|
|
10
10
|
set params(params) {
|
|
@@ -65,4 +65,10 @@ class OrthoCamera {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
exports.OrthoCamera = OrthoCamera;
|
|
68
|
+
|
|
69
|
+
const registerOrthoCamera = () => {
|
|
70
|
+
factory_1.Factory.registerPlugin("OrthoCamera", OrthoCamera);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
exports.registerOrthoCamera = registerOrthoCamera;
|
|
68
74
|
//# sourceMappingURL=camera.js.map
|
package/cjs/core/camera.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":"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","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICamera, mat4, OrthoParameters, vec3 } from '../interface';\nimport { mat4Allocate } from '../allocator/matrix-allocate';\nimport { lookAt, multiply, ortho, transformMat4 } from '../common/matrix';\nimport { Factory } from '../factory';\n\n/**\n * 部分代码参考 https://github.com/toji/gl-matrix\n * Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// /**\n// * 代码来自gl-matrix https://github.com/toji/gl-matrix\n// * Generates a matrix that makes something look at something else.\n// *\n// * @param {mat4} out mat4 frustum matrix will be written into\n// * @param {ReadonlyVec3} eye Position of the viewer\n// * @param {ReadonlyVec3} center Point the viewer is looking at\n// * @param {ReadonlyVec3} up vec3 pointing up\n// * @returns {mat4} out\n// */\n\n// function targetTo(out: mat4, eye: vec3, target: vec3, up: vec3) {\n// const eyex = eye[0];\n// const eyey = eye[1];\n// const eyez = eye[2];\n// const upx = up[0];\n// const upy = up[1];\n// const upz = up[2];\n// let z0 = eyex - target[0];\n// let z1 = eyey - target[1];\n// let z2 = eyez - target[2];\n// let len = z0 * z0 + z1 * z1 + z2 * z2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// z0 *= len;\n// z1 *= len;\n// z2 *= len;\n// }\n\n// let x0 = upy * z2 - upz * z1;\n// let x1 = upz * z0 - upx * z2;\n// let x2 = upx * z1 - upy * z0;\n// len = x0 * x0 + x1 * x1 + x2 * x2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// x0 *= len;\n// x1 *= len;\n// x2 *= len;\n// }\n\n// out[0] = x0;\n// out[1] = x1;\n// out[2] = x2;\n// out[3] = 0;\n// out[4] = z1 * x2 - z2 * x1;\n// out[5] = z2 * x0 - z0 * x2;\n// out[6] = z0 * x1 - z1 * x0;\n// out[7] = 0;\n// out[8] = z0;\n// out[9] = z1;\n// out[10] = z2;\n// out[11] = 0;\n// out[12] = eyex;\n// out[13] = eyey;\n// out[14] = eyez;\n// out[15] = 1;\n// return out;\n// }\n\n/**\n * 正交投影摄像机\n */\nexport class OrthoCamera implements ICamera {\n private _params: OrthoParameters;\n\n /* cache */\n private _projectionMatrixCached: mat4;\n private _viewMatrixCached: mat4;\n private _vp: mat4;\n\n set params(params: OrthoParameters) {\n this._params = { ...params };\n this._projectionMatrixCached = this.forceGetProjectionMatrix();\n this._viewMatrixCached = this.forceGetViewMatrix();\n }\n get params(): OrthoParameters {\n return { ...this._params };\n }\n\n constructor(params: OrthoParameters) {\n this.params = params;\n }\n\n /**\n * 获取视图矩阵\n */\n getViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n return this._viewMatrixCached;\n }\n forceGetViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n const { pos, center, up } = this.params.viewParams;\n lookAt(this._viewMatrixCached, pos, center, up);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._viewMatrixCached;\n }\n\n /**\n * 获取projection矩阵\n */\n getProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n return this._projectionMatrixCached;\n }\n forceGetProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n const { left, top, right, bottom } = this._params;\n // 从0到2000000的Z轴范围,小于0的会被裁剪\n ortho(this._projectionMatrixCached, left, right, bottom, top, 0.0, -2000000.0);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._projectionMatrixCached;\n }\n\n getField() {\n const { fieldRatio = 0.8, fieldDepth, left, right } = this._params;\n return (fieldDepth ?? right - left) * fieldRatio;\n }\n\n getProjectionScale(z: number): number {\n const field = this.getField();\n return field / (field + z);\n }\n\n view(x: number, y: number, z: number): [number, number, number] {\n const outP: vec3 = [0, 0, 0];\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n return outP;\n }\n\n // 部分参考:https://www.mamboleoo.be/articles/how-to-render-3d-in-2d-canvas\n vp(x: number, y: number, z: number): IPointLike {\n const outP: vec3 = [0, 0, 0];\n const { pos } = this._params.viewParams;\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n x = outP[0];\n y = outP[1];\n z = outP[2];\n\n const sizeProjection = this.getProjectionScale(z);\n const xProject = x * sizeProjection + pos[0];\n const yProject = y * sizeProjection + pos[1];\n return {\n x: xProject,\n y: yProject\n };\n }\n}\n\nexport const registerOrthoCamera = () => {\n Factory.registerPlugin('OrthoCamera', OrthoCamera);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/graphic-utils.ts"],"names":[],"mappings":"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","file":"graphic-utils.js","sourcesContent":["import { injectable, inject, named } from '../common/inversify-lite';\nimport type {\n ICanvas,\n IContext2d,\n EnvType,\n IGlobal,\n ITextAttribute,\n IContributionProvider,\n IGraphic,\n IGraphicAttribute,\n IStage,\n IWindow\n} from '../interface';\nimport type { ITextMeasure, TextOptionsType } from '../interface/text';\nimport { TextMeasureContribution } from './contributions/textMeasure/textMeasure-contribution';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport { DefaultTextStyle } from '../graphic/config';\nimport type { IMatrix, IPointLike, ITextMeasureOption } from '@visactor/vutils';\nimport { Matrix, TextMeasure } from '@visactor/vutils';\nimport type { IGraphicUtil, ITransformUtil, TransformType } from '../interface/core';\nimport { canvasAllocate } from '../allocator/canvas-allocate';\nimport { application } from '../application';\nimport { container } from '../container';\nimport { VWindow } from './window';\nimport { graphicCreator } from '../graphic';\nimport { matrixAllocate } from '../allocator/matrix-allocate';\n\n@injectable()\nexport class DefaultGraphicUtil implements IGraphicUtil {\n get canvas(): ICanvas {\n this.tryInitCanvas();\n return this._canvas;\n }\n get context(): IContext2d | null {\n this.tryInitCanvas();\n return this._context;\n }\n _canvas?: ICanvas;\n _context?: IContext2d | null;\n _textMeasure: ITextMeasure;\n configured: boolean;\n global: IGlobal;\n\n constructor(\n @inject(ContributionProvider)\n @named(TextMeasureContribution)\n protected readonly contributions: IContributionProvider<ITextMeasure>\n ) {\n this.configured = false;\n this.global = application.global;\n this.global.hooks.onSetEnv.tap('graphic-util', (lastEnv, env, global) => {\n this.configured = false;\n this.configure(global, env);\n });\n }\n\n get textMeasure(): ITextMeasure {\n if (!this._textMeasure) {\n this.configure(this.global, this.global.env);\n }\n return this._textMeasure;\n }\n\n configure(global: IGlobal, env: EnvType) {\n if (this.configured) {\n return;\n }\n this.contributions.getContributions().forEach(contribution => {\n contribution.configure(this, env);\n });\n this.configured = true;\n }\n\n tryInitCanvas() {\n if (!this._canvas) {\n const canvas = canvasAllocate.shareCanvas();\n this._canvas = canvas;\n this._context = canvas.getContext('2d');\n }\n }\n\n bindTextMeasure(tm: ITextMeasure) {\n this._textMeasure = tm;\n }\n\n measureText(\n text: string,\n tc: TextOptionsType,\n method: 'native' | 'simple' | 'quick' = 'native'\n ): { width: number; height: number } {\n this.configure(this.global, this.global.env);\n const m = this.global.measureTextMethod;\n this.global.measureTextMethod = method;\n const data = {\n width: this._textMeasure.measureTextWidth(text, tc),\n height: tc.fontSize ?? DefaultTextStyle.fontSize\n };\n this.global.measureTextMethod = m;\n return data;\n }\n\n createTextMeasureInstance(\n textSpec?: Partial<ITextAttribute>,\n option?: Partial<ITextMeasureOption>,\n getCanvasForMeasure?: () => any\n ) {\n this.configure(this.global, this.global.env);\n return new TextMeasure<ITextAttribute>(\n {\n defaultFontParams: {\n fontFamily: DefaultTextStyle.fontFamily,\n fontSize: DefaultTextStyle.fontSize\n },\n getCanvasForMeasure: getCanvasForMeasure || (() => this.canvas),\n getTextBounds: undefined,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n }\n\n drawGraphicToCanvas(\n graphic: IGraphic<Partial<IGraphicAttribute>>,\n stage: IStage,\n canvas?: HTMLCanvasElement\n ): HTMLCanvasElement | null | Promise<HTMLCanvasElement> {\n if (!stage.defaultLayer) {\n return null;\n }\n const window = container.get<IWindow>(VWindow);\n const bounds = graphic.AABBBounds;\n const width = bounds.width();\n const height = bounds.height();\n const x1 = -bounds.x1;\n const y1 = -bounds.y1;\n window.create({\n viewBox: { x1, y1, x2: bounds.x2, y2: bounds.y2 },\n width,\n height,\n canvas,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n\n const disableCheckGraphicWidthOutRange = stage.params.optimize.disableCheckGraphicWidthOutRange;\n // 关掉dirtyBounds检测\n stage.params.optimize.disableCheckGraphicWidthOutRange = true;\n stage.defaultLayer.getNativeHandler().drawTo(window, [graphic as any], {\n transMatrix: window.getViewBoxTransform(),\n viewBox: window.getViewBox(),\n stage,\n layer: stage.defaultLayer,\n renderService: stage.renderService,\n background: 'transparent',\n clear: true, // 第一个layer需要clear\n updateBounds: false\n });\n stage.params.optimize.disableCheckGraphicWidthOutRange = disableCheckGraphicWidthOutRange;\n\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n }\n}\n\nenum TransformMode {\n transform = 0,\n matrix = 1\n}\n\nconst _matrix = new Matrix();\n\n@injectable()\nexport class DefaultTransformUtil implements ITransformUtil {\n private matrix: IMatrix;\n private originTransform: TransformType;\n\n private outSourceMatrix: IMatrix;\n private outTargetMatrix: IMatrix;\n\n private mode: TransformMode;\n constructor() {\n this.matrix = new Matrix();\n }\n init(origin: TransformType): this {\n this.mode = TransformMode.transform;\n this.originTransform = origin;\n this.matrix.reset();\n return this;\n }\n fromMatrix(source: IMatrix, target: IMatrix): this {\n this.mode = TransformMode.matrix;\n this.outSourceMatrix = source;\n this.outTargetMatrix = target;\n return this;\n }\n\n // translate: (x: number, y: number) => Transform;\n // translateTo: (x: number, y: number) => Transform;\n private scaleMatrix(sx: number, sy: number, center?: IPointLike): this {\n // if (this.outSourceMatrix !== this.outTargetMatrix) {\n // // copy\n // const m = this.outSourceMatrix;\n // this.outTargetMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n // }\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n if (center) {\n const { x, y } = center;\n this.outTargetMatrix.translate(x, y);\n this.outTargetMatrix.scale(sx, sy);\n this.outTargetMatrix.translate(-x, -y);\n } else {\n this.outTargetMatrix.scale(sx, sy);\n }\n\n // _matrix.reset();\n // if (center) {\n // const { x, y } = center;\n // _matrix.translate(x, y);\n // _matrix.scale(sx, sy);\n // _matrix.translate(-x, -y);\n // } else {\n // _matrix.scale(sx, sy);\n // }\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n\n private rotateMatrix(angle: number, center?: IPointLike): this {\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n if (center) {\n const { x, y } = center;\n this.outTargetMatrix.translate(x, y);\n this.outTargetMatrix.rotate(angle);\n this.outTargetMatrix.translate(-x, -y);\n } else {\n this.outTargetMatrix.rotate(angle);\n }\n\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n scale(sx: number, sy: number, center?: IPointLike): this {\n if (this.mode === TransformMode.matrix) {\n return this.scaleMatrix(sx, sy, center);\n }\n return this;\n }\n rotate(angle: number, center?: IPointLike): this {\n if (this.mode === TransformMode.matrix) {\n return this.rotateMatrix(angle, center);\n }\n return this;\n }\n private translateMatrix(dx: number, dy: number): this {\n // if (this.outSourceMatrix !== this.outTargetMatrix) {\n // // copy\n // const m = this.outSourceMatrix;\n // this.outTargetMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n // }\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n this.outTargetMatrix.translate(dx, dy);\n\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n translate(dx: number, dy: number): this {\n if (this.mode === TransformMode.matrix) {\n return this.translateMatrix(dx, dy);\n }\n return this;\n }\n // scaleTo: (sx: number, sy: number, center: IPointLike) => Transform;\n // rotate: (rx: number, ry: number, center: IPointLike) => Transform;\n // rotateTo: (rx: number, ry: number, center: IPointLike) => Transform;\n // 语法糖\n // interactive: (dx: number, dy: number, dsx: number, dsy: number, drx: number, dry: number) => Transform;\n // // 扩展padding像素,用于外描边,内描边\n // extend: (origin: TransformType, padding: number) => Transform;\n // 将所有的transform生成为一次的transform\n simplify(target: TransformType): this {\n if (this.mode === TransformMode.matrix) {\n return this.simplifyMatrix(target);\n }\n return this;\n }\n private simplifyMatrix(target: TransformType): this {\n // let { a, b, c, d, e, f } = this.outTargetMatrix;\n // if (a === 0 || d === 0) return this;\n // const { dx=0, dy=0 } = target;\n // // 不处理dx和dy\n // e -= dx;\n // f -= dy;\n // const tanTheta = b / a;\n // const angle = Math.atan(tanTheta);\n // const cosTheta = cos(angle);\n // const sinTheta = sin(angle);\n // const sx = cosTheta !== 0 ? (a / cosTheta) : (b / sinTheta);\n // const sy = sinTheta !== 0 ? (-c / sinTheta) : (d / cosTheta);\n // const x = e;\n // const y = f;\n // target.x = x;\n // target.y = y;\n // target.dx = dx;\n return this;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/graphic-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAqE;AAcrE,mGAA+F;AAE/F,2EAAuE;AACvE,8CAAqD;AAErD,6CAAuD;AAEvD,kEAA8D;AAC9D,gDAA6C;AAC7C,4CAAyC;AACzC,qCAAmC;AAG5B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,IAAI,MAAM;QACR,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,OAAO;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAOD,YAGqB,aAAkD;QAAlD,kBAAa,GAAb,aAAa,CAAqC;QAErE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,yBAAW,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YACtE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC3D,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,MAAM,GAAG,gCAAc,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;IAED,eAAe,CAAC,EAAgB;QAC9B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CACT,IAAY,EACZ,EAAmB,EACnB,SAAwC,QAAQ;;QAEhD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC;QACvC,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,EAAE,MAAA,EAAE,CAAC,QAAQ,mCAAI,yBAAgB,CAAC,QAAQ;SACjD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB,CACvB,QAAkC,EAClC,MAAoC,EACpC,mBAA+B;QAE/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,IAAI,oBAAW,iBAElB,iBAAiB,EAAE;gBACjB,UAAU,EAAE,yBAAgB,CAAC,UAAU;gBACvC,QAAQ,EAAE,yBAAgB,CAAC,QAAQ;aACpC,EACD,mBAAmB,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAC/D,aAAa,EAAE,SAAS,EACxB,cAAc,EAAE,cAAc,GAAG,oBAAW,CAAC,iBAAiB,GAAG,oBAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,mBAAmB,CACjB,OAA6C,EAC7C,KAAa,EACb,MAA0B;QAE1B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,MAAM,GAAG,qBAAS,CAAC,GAAG,CAAU,gBAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACjD,KAAK;YACL,MAAM;YACN,MAAM;YACN,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;YACrB,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,gCAAgC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAEhG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC9D,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAc,CAAC,EAAE;YACrE,WAAW,EAAE,MAAM,CAAC,mBAAmB,EAAE;YACzC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;YAC5B,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,YAAY;YACzB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,UAAU,EAAE,aAAa;YACzB,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,gCAAgC,CAAC;QAE1F,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,YAAY,EAAE;YAClB,OAAO,CAAC,CAAC,YAAY,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA5IY,kBAAkB;IAD9B,IAAA,2BAAU,GAAE;IAiBR,WAAA,IAAA,uBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,sBAAK,EAAC,kDAAuB,CAAC,CAAA;;GAjBtB,kBAAkB,CA4I9B;AA5IY,gDAAkB;AA8I/B,IAAK,aAGJ;AAHD,WAAK,aAAa;IAChB,2DAAa,CAAA;IACb,qDAAU,CAAA;AACZ,CAAC,EAHI,aAAa,KAAb,aAAa,QAGjB;AAED,MAAM,OAAO,GAAG,IAAI,eAAM,EAAE,CAAC;AAGtB,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAQ/B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,MAAqB;QACxB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU,CAAC,MAAe,EAAE,MAAe;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAIO,WAAW,CAAC,EAAU,EAAE,EAAU,EAAE,MAAmB;QAM7D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACpC;QAWD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,MAAmB;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,EAAU,EAAE,MAAmB;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,KAAa,EAAE,MAAmB;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACO,eAAe,CAAC,EAAU,EAAE,EAAU;QAM5C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,CAAC,EAAU,EAAE,EAAU;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IASD,QAAQ,CAAC,MAAqB;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACO,cAAc,CAAC,MAAqB;QAkB1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA3IY,oBAAoB;IADhC,IAAA,2BAAU,GAAE;;GACA,oBAAoB,CA2IhC;AA3IY,oDAAoB","file":"graphic-utils.js","sourcesContent":["import { injectable, inject, named } from '../common/inversify-lite';\nimport type {\n ICanvas,\n IContext2d,\n EnvType,\n IGlobal,\n ITextAttribute,\n IContributionProvider,\n IGraphic,\n IGraphicAttribute,\n IStage,\n IWindow\n} from '../interface';\nimport type { ITextMeasure, TextOptionsType } from '../interface/text';\nimport { TextMeasureContribution } from './contributions/textMeasure/textMeasure-contribution';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport { DefaultTextStyle } from '../graphic/config';\nimport type { IMatrix, IPointLike, ITextMeasureOption } from '@visactor/vutils';\nimport { Matrix, TextMeasure } from '@visactor/vutils';\nimport type { IGraphicUtil, ITransformUtil, TransformType } from '../interface/core';\nimport { canvasAllocate } from '../allocator/canvas-allocate';\nimport { application } from '../application';\nimport { container } from '../container';\nimport { VWindow } from './window';\n\n@injectable()\nexport class DefaultGraphicUtil implements IGraphicUtil {\n get canvas(): ICanvas {\n this.tryInitCanvas();\n return this._canvas;\n }\n get context(): IContext2d | null {\n this.tryInitCanvas();\n return this._context;\n }\n _canvas?: ICanvas;\n _context?: IContext2d | null;\n _textMeasure: ITextMeasure;\n configured: boolean;\n global: IGlobal;\n\n constructor(\n @inject(ContributionProvider)\n @named(TextMeasureContribution)\n protected readonly contributions: IContributionProvider<ITextMeasure>\n ) {\n this.configured = false;\n this.global = application.global;\n this.global.hooks.onSetEnv.tap('graphic-util', (lastEnv, env, global) => {\n this.configured = false;\n this.configure(global, env);\n });\n }\n\n get textMeasure(): ITextMeasure {\n if (!this._textMeasure) {\n this.configure(this.global, this.global.env);\n }\n return this._textMeasure;\n }\n\n configure(global: IGlobal, env: EnvType) {\n if (this.configured) {\n return;\n }\n this.contributions.getContributions().forEach(contribution => {\n contribution.configure(this, env);\n });\n this.configured = true;\n }\n\n tryInitCanvas() {\n if (!this._canvas) {\n const canvas = canvasAllocate.shareCanvas();\n this._canvas = canvas;\n this._context = canvas.getContext('2d');\n }\n }\n\n bindTextMeasure(tm: ITextMeasure) {\n this._textMeasure = tm;\n }\n\n measureText(\n text: string,\n tc: TextOptionsType,\n method: 'native' | 'simple' | 'quick' = 'native'\n ): { width: number; height: number } {\n this.configure(this.global, this.global.env);\n const m = this.global.measureTextMethod;\n this.global.measureTextMethod = method;\n const data = {\n width: this._textMeasure.measureTextWidth(text, tc),\n height: tc.fontSize ?? DefaultTextStyle.fontSize\n };\n this.global.measureTextMethod = m;\n return data;\n }\n\n createTextMeasureInstance(\n textSpec?: Partial<ITextAttribute>,\n option?: Partial<ITextMeasureOption>,\n getCanvasForMeasure?: () => any\n ) {\n this.configure(this.global, this.global.env);\n return new TextMeasure<ITextAttribute>(\n {\n defaultFontParams: {\n fontFamily: DefaultTextStyle.fontFamily,\n fontSize: DefaultTextStyle.fontSize\n },\n getCanvasForMeasure: getCanvasForMeasure || (() => this.canvas),\n getTextBounds: undefined,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n }\n\n drawGraphicToCanvas(\n graphic: IGraphic<Partial<IGraphicAttribute>>,\n stage: IStage,\n canvas?: HTMLCanvasElement\n ): HTMLCanvasElement | null | Promise<HTMLCanvasElement> {\n if (!stage.defaultLayer) {\n return null;\n }\n const window = container.get<IWindow>(VWindow);\n const bounds = graphic.AABBBounds;\n const width = bounds.width();\n const height = bounds.height();\n const x1 = -bounds.x1;\n const y1 = -bounds.y1;\n window.create({\n viewBox: { x1, y1, x2: bounds.x2, y2: bounds.y2 },\n width,\n height,\n canvas,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n\n const disableCheckGraphicWidthOutRange = stage.params.optimize.disableCheckGraphicWidthOutRange;\n // 关掉dirtyBounds检测\n stage.params.optimize.disableCheckGraphicWidthOutRange = true;\n stage.defaultLayer.getNativeHandler().drawTo(window, [graphic as any], {\n transMatrix: window.getViewBoxTransform(),\n viewBox: window.getViewBox(),\n stage,\n layer: stage.defaultLayer,\n renderService: stage.renderService,\n background: 'transparent',\n clear: true, // 第一个layer需要clear\n updateBounds: false\n });\n stage.params.optimize.disableCheckGraphicWidthOutRange = disableCheckGraphicWidthOutRange;\n\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n }\n}\n\nenum TransformMode {\n transform = 0,\n matrix = 1\n}\n\nconst _matrix = new Matrix();\n\n@injectable()\nexport class DefaultTransformUtil implements ITransformUtil {\n private matrix: IMatrix;\n private originTransform: TransformType;\n\n private outSourceMatrix: IMatrix;\n private outTargetMatrix: IMatrix;\n\n private mode: TransformMode;\n constructor() {\n this.matrix = new Matrix();\n }\n init(origin: TransformType): this {\n this.mode = TransformMode.transform;\n this.originTransform = origin;\n this.matrix.reset();\n return this;\n }\n fromMatrix(source: IMatrix, target: IMatrix): this {\n this.mode = TransformMode.matrix;\n this.outSourceMatrix = source;\n this.outTargetMatrix = target;\n return this;\n }\n\n // translate: (x: number, y: number) => Transform;\n // translateTo: (x: number, y: number) => Transform;\n private scaleMatrix(sx: number, sy: number, center?: IPointLike): this {\n // if (this.outSourceMatrix !== this.outTargetMatrix) {\n // // copy\n // const m = this.outSourceMatrix;\n // this.outTargetMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n // }\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n if (center) {\n const { x, y } = center;\n this.outTargetMatrix.translate(x, y);\n this.outTargetMatrix.scale(sx, sy);\n this.outTargetMatrix.translate(-x, -y);\n } else {\n this.outTargetMatrix.scale(sx, sy);\n }\n\n // _matrix.reset();\n // if (center) {\n // const { x, y } = center;\n // _matrix.translate(x, y);\n // _matrix.scale(sx, sy);\n // _matrix.translate(-x, -y);\n // } else {\n // _matrix.scale(sx, sy);\n // }\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n\n private rotateMatrix(angle: number, center?: IPointLike): this {\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n if (center) {\n const { x, y } = center;\n this.outTargetMatrix.translate(x, y);\n this.outTargetMatrix.rotate(angle);\n this.outTargetMatrix.translate(-x, -y);\n } else {\n this.outTargetMatrix.rotate(angle);\n }\n\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n scale(sx: number, sy: number, center?: IPointLike): this {\n if (this.mode === TransformMode.matrix) {\n return this.scaleMatrix(sx, sy, center);\n }\n return this;\n }\n rotate(angle: number, center?: IPointLike): this {\n if (this.mode === TransformMode.matrix) {\n return this.rotateMatrix(angle, center);\n }\n return this;\n }\n private translateMatrix(dx: number, dy: number): this {\n // if (this.outSourceMatrix !== this.outTargetMatrix) {\n // // copy\n // const m = this.outSourceMatrix;\n // this.outTargetMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n // }\n const sMatrix = this.outSourceMatrix;\n _matrix.setValue(sMatrix.a, sMatrix.b, sMatrix.c, sMatrix.d, sMatrix.e, sMatrix.f);\n this.outTargetMatrix.reset();\n this.outTargetMatrix.translate(dx, dy);\n\n this.outTargetMatrix.multiply(_matrix.a, _matrix.b, _matrix.c, _matrix.d, _matrix.e, _matrix.f);\n return this;\n }\n translate(dx: number, dy: number): this {\n if (this.mode === TransformMode.matrix) {\n return this.translateMatrix(dx, dy);\n }\n return this;\n }\n // scaleTo: (sx: number, sy: number, center: IPointLike) => Transform;\n // rotate: (rx: number, ry: number, center: IPointLike) => Transform;\n // rotateTo: (rx: number, ry: number, center: IPointLike) => Transform;\n // 语法糖\n // interactive: (dx: number, dy: number, dsx: number, dsy: number, drx: number, dry: number) => Transform;\n // // 扩展padding像素,用于外描边,内描边\n // extend: (origin: TransformType, padding: number) => Transform;\n // 将所有的transform生成为一次的transform\n simplify(target: TransformType): this {\n if (this.mode === TransformMode.matrix) {\n return this.simplifyMatrix(target);\n }\n return this;\n }\n private simplifyMatrix(target: TransformType): this {\n // let { a, b, c, d, e, f } = this.outTargetMatrix;\n // if (a === 0 || d === 0) return this;\n // const { dx=0, dy=0 } = target;\n // // 不处理dx和dy\n // e -= dx;\n // f -= dy;\n // const tanTheta = b / a;\n // const angle = Math.atan(tanTheta);\n // const cosTheta = cos(angle);\n // const sinTheta = sin(angle);\n // const sx = cosTheta !== 0 ? (a / cosTheta) : (b / sinTheta);\n // const sy = sinTheta !== 0 ? (-c / sinTheta) : (d / cosTheta);\n // const x = e;\n // const y = f;\n // target.x = x;\n // target.y = y;\n // target.dx = dx;\n return this;\n }\n}\n"]}
|
package/cjs/core/light.d.ts
CHANGED
package/cjs/core/light.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.DirectionalLight = void 0;
|
|
5
|
+
}), exports.registerDirectionalLight = exports.DirectionalLight = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), color_string_1 = require("../color-string");
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), color_string_1 = require("../color-string"), factory_1 = require("../factory");
|
|
8
8
|
|
|
9
9
|
class DirectionalLight {
|
|
10
10
|
constructor(dir, color, ambient = .8) {
|
|
@@ -23,4 +23,10 @@ class DirectionalLight {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
exports.DirectionalLight = DirectionalLight;
|
|
26
|
+
|
|
27
|
+
const registerDirectionalLight = () => {
|
|
28
|
+
factory_1.Factory.registerPlugin("DirectionalLight", DirectionalLight);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.registerDirectionalLight = registerDirectionalLight;
|
|
26
32
|
//# sourceMappingURL=light.js.map
|
package/cjs/core/light.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/light.ts"],"names":[],"mappings":";;;AACA,6CAA4D;AAE5D,kDAAwD;
|
|
1
|
+
{"version":3,"sources":["../src/core/light.ts"],"names":[],"mappings":";;;AACA,6CAA4D;AAE5D,kDAAwD;AACxD,wCAAqC;AAErC,MAAa,gBAAgB;IAO3B,YAAY,GAAS,EAAE,KAAa,EAAE,UAAkB,GAAG;QACzD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,yBAAU,CAAC,GAAG,CAAC,KAAK,EAAE,wBAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,MAAM,GAAG,IAAA,aAAI,EAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,YAAY,CAAC,MAAY,EAAE,KAAoB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,MAAM,UAAU,GAAG,IAAA,YAAG,EACpB,IAAA,YAAG,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5G,IAAI,CAAC,OAAO,EACd,CAAC,CACF,CAAC;QAEF,IAAI,UAAgB,CAAC;QACrB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YACnB,UAAU,GAAG,yBAAU,CAAC,GAAG,CAAC,KAAK,EAAE,wBAAS,CAAC,MAAM,CAAQ,CAAC;SAC7D;aAAM;YACL,UAAU,GAAG,KAAK,CAAC;SACpB;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEtC,OAAO,OAAO,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAC3D,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UACvC,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;IAC1D,CAAC;CACF;AArCD,4CAqCC;AAEM,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,iBAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC","file":"light.js","sourcesContent":["import type { vec4 } from '@visactor/vutils';\nimport { isString, max, min, sqrt } from '@visactor/vutils';\nimport type { vec3 } from '../interface';\nimport { ColorStore, ColorType } from '../color-string';\nimport { Factory } from '../factory';\n\nexport class DirectionalLight {\n declare dir: vec3;\n declare color: string;\n declare colorRgb: vec4;\n declare formatedDir: vec3;\n declare ambient: number;\n\n constructor(dir: vec3, color: string, ambient: number = 0.8) {\n this.dir = dir;\n this.color = color;\n this.colorRgb = ColorStore.Get(color, ColorType.Color1);\n this.ambient = ambient;\n const length = sqrt(dir[0] * dir[0] + dir[1] * dir[1] + dir[2] * dir[2]);\n this.formatedDir = [dir[0] / length, dir[1] / length, dir[2] / length];\n }\n\n computeColor(normal: vec3, color: string | vec3): string {\n const lightDir = this.formatedDir;\n const brightness = min(\n max((normal[0] * lightDir[0] + normal[1] * lightDir[1] + normal[2] * lightDir[2]) * (1 - this.ambient / 2), 0) +\n this.ambient,\n 1\n );\n\n let colorArray: vec3;\n if (isString(color)) {\n colorArray = ColorStore.Get(color, ColorType.Color1) as any;\n } else {\n colorArray = color;\n }\n\n const lightColorArray = this.colorRgb;\n\n return `rgb(${lightColorArray[0] * colorArray[0] * brightness}, ${\n lightColorArray[1] * colorArray[1] * brightness\n }, ${lightColorArray[2] * colorArray[2] * brightness})`;\n }\n}\n\nexport const registerDirectionalLight = () => {\n Factory.registerPlugin('DirectionalLight', DirectionalLight);\n};\n"]}
|
package/cjs/core/stage.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IAABBBounds, IBounds, IBoundsLike, IMatrix, AABBBounds } from '@visactor/vutils';
|
|
2
2
|
import type { IExportType, IStage, IStageParams, ILayer, IColor, IOption3D, ICamera, vec3, IDirectionLight, ITicker, IRenderService, IPickerService, IPluginService, ISyncHook, IDrawContext, IWindow, ILayerService, ITimeline, IOptimizeType, LayerMode, PickResult, IPlugin } from '../interface';
|
|
3
3
|
import type { Layer } from './layer';
|
|
4
|
-
import { Group } from '../graphic';
|
|
4
|
+
import { Group } from '../graphic/group';
|
|
5
5
|
type IStageState = 'rendering' | 'normal';
|
|
6
6
|
export declare class Stage extends Group implements IStage {
|
|
7
7
|
parent: IStage | null;
|
package/cjs/core/stage.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Stage = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), window_1 = require("./window"), event_1 = require("../event"), container_1 = require("../container"), render_1 = require("../render"),
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), window_1 = require("./window"), event_1 = require("../event"), container_1 = require("../container"), render_1 = require("../render"), group_1 = require("../graphic/group"), theme_1 = require("../graphic/theme"), constants_1 = require("../picker/constants"), constants_2 = require("../plugins/constants"), auto_render_plugin_1 = require("../plugins/builtin-plugin/auto-render-plugin"), _3dview_transform_plugin_1 = require("../plugins/builtin-plugin/3dview-transform-plugin"), incremental_auto_render_plugin_1 = require("../plugins/builtin-plugin/incremental-auto-render-plugin"), dirty_bounds_plugin_1 = require("../plugins/builtin-plugin/dirty-bounds-plugin"), flex_layout_plugin_1 = require("../plugins/builtin-plugin/flex-layout-plugin"), default_ticker_1 = require("../animate/default-ticker"), tapable_1 = require("../tapable"), constants_3 = require("./constants"), animate_1 = require("../animate"), application_1 = require("../application"), env_check_1 = require("../env-check"), factory_1 = require("../factory"), DefaultConfig = {
|
|
8
8
|
WIDTH: 500,
|
|
9
9
|
HEIGHT: 500,
|
|
10
10
|
X: 0,
|
|
@@ -12,7 +12,7 @@ const vutils_1 = require("@visactor/vutils"), window_1 = require("./window"), ev
|
|
|
12
12
|
BACKGROUND: "white"
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
class Stage extends
|
|
15
|
+
class Stage extends group_1.Group {
|
|
16
16
|
set viewBox(b) {
|
|
17
17
|
this.window.setViewBox(b);
|
|
18
18
|
}
|
|
@@ -91,7 +91,7 @@ class Stage extends graphic_1.Group {
|
|
|
91
91
|
}, this.afterRender = stage => {
|
|
92
92
|
this.renderCount++, this._afterRender && this._afterRender(stage), this._afterNextRenderCbs && this._afterNextRenderCbs.forEach((cb => cb(stage))),
|
|
93
93
|
this._afterNextRenderCbs = null;
|
|
94
|
-
}, this.params = params, this.theme = new
|
|
94
|
+
}, this.params = params, this.theme = new theme_1.Theme, this.hooks = {
|
|
95
95
|
beforeRender: new tapable_1.SyncHook([ "stage" ]),
|
|
96
96
|
afterRender: new tapable_1.SyncHook([ "stage" ])
|
|
97
97
|
}, this.global = application_1.application.global, !this.global.env && (0, env_check_1.isBrowserEnv)() && this.global.setEnv("browser"),
|
|
@@ -176,7 +176,9 @@ class Stage extends graphic_1.Group {
|
|
|
176
176
|
const options3d = this.get3dOptions(options), {light: light, center: center, camera: camera, alpha: alpha, beta: beta, fieldRatio: fieldRatio, fieldDepth: fieldDepth} = options3d, {dir: dir = [ 1, 1, -1 ], color: color = "white", ambient: ambient} = light, centerX = (null !== (_a = center.x) && void 0 !== _a ? _a : this.width / 2) + (null !== (_b = center.dx) && void 0 !== _b ? _b : 0), centerY = (null !== (_d = center.y) && void 0 !== _d ? _d : this.height / 2) + (null !== (_e = center.dy) && void 0 !== _e ? _e : 0), centerVec3 = [ centerX, centerY, (null !== (_f = center.z) && void 0 !== _f ? _f : 0) + (null !== (_g = center.dz) && void 0 !== _g ? _g : 0) ];
|
|
177
177
|
let cameraX = 0, cameraY = 0, cameraZ = 0;
|
|
178
178
|
camera || (cameraX = Math.sin(alpha) + centerX, cameraY = Math.sin(beta) + centerY,
|
|
179
|
-
cameraZ = Math.cos(alpha) * Math.cos(beta) * 1)
|
|
179
|
+
cameraZ = Math.cos(alpha) * Math.cos(beta) * 1);
|
|
180
|
+
const DirectionalLight = factory_1.Factory.getPlugin("DirectionalLight");
|
|
181
|
+
DirectionalLight && (this.light = new DirectionalLight(dir, color, ambient));
|
|
180
182
|
const cameraParams = {
|
|
181
183
|
left: 0,
|
|
182
184
|
right: this.width,
|
|
@@ -190,7 +192,10 @@ class Stage extends graphic_1.Group {
|
|
|
190
192
|
up: [ 0, 1, 0 ]
|
|
191
193
|
}
|
|
192
194
|
};
|
|
193
|
-
this.camera
|
|
195
|
+
if (this.camera) this.camera.params = cameraParams; else {
|
|
196
|
+
const OrthoCamera = factory_1.Factory.getPlugin("OrthoCamera");
|
|
197
|
+
OrthoCamera && (this.camera = new OrthoCamera(cameraParams));
|
|
198
|
+
}
|
|
194
199
|
options.enableView3dTransform && this.enableView3dTransform();
|
|
195
200
|
}
|
|
196
201
|
setBeforeRender(cb) {
|
|
@@ -247,7 +252,9 @@ class Stage extends graphic_1.Group {
|
|
|
247
252
|
})));
|
|
248
253
|
}
|
|
249
254
|
enableHtmlAttribute(container) {
|
|
250
|
-
|
|
255
|
+
if (this.htmlAttribute) return;
|
|
256
|
+
const HtmlAttributePlugin = factory_1.Factory.getPlugin("HtmlAttributePlugin");
|
|
257
|
+
HtmlAttributePlugin && (this.htmlAttribute = container, this.pluginService.register(new HtmlAttributePlugin));
|
|
251
258
|
}
|
|
252
259
|
disableHtmlAttribute() {
|
|
253
260
|
this.htmlAttribute && (this.htmlAttribute = !1, this.pluginService.findPluginsByName("HtmlAttributePlugin").forEach((plugin => {
|
|
@@ -255,7 +262,9 @@ class Stage extends graphic_1.Group {
|
|
|
255
262
|
})));
|
|
256
263
|
}
|
|
257
264
|
enableReactAttribute(container) {
|
|
258
|
-
|
|
265
|
+
if (this.reactAttribute) return;
|
|
266
|
+
const ReactAttributePlugin = factory_1.Factory.getPlugin("ReactAttributePlugin");
|
|
267
|
+
ReactAttributePlugin && (this.reactAttribute = container, this.pluginService.register(new ReactAttributePlugin));
|
|
259
268
|
}
|
|
260
269
|
disableReactAttribute() {
|
|
261
270
|
this.reactAttribute && (this.reactAttribute = !1, this.pluginService.findPluginsByName("ReactAttributePlugin").forEach((plugin => {
|