@visactor/vrender 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/cjs/canvas/contributions/modules.js +2 -2
  2. package/cjs/canvas/contributions/modules.js.map +1 -1
  3. package/cjs/canvas/contributions/node/canvas.d.ts +48 -0
  4. package/cjs/canvas/contributions/node/canvas.js +105 -0
  5. package/cjs/canvas/contributions/node/canvas.js.map +1 -0
  6. package/cjs/canvas/contributions/node/context.d.ts +7 -0
  7. package/cjs/canvas/contributions/node/context.js +30 -0
  8. package/cjs/canvas/contributions/node/context.js.map +1 -0
  9. package/cjs/canvas/contributions/node/index.d.ts +2 -0
  10. package/cjs/canvas/contributions/node/index.js +21 -0
  11. package/cjs/canvas/contributions/node/index.js.map +1 -0
  12. package/cjs/canvas/contributions/node/modules.d.ts +3 -0
  13. package/cjs/canvas/contributions/node/modules.js +13 -0
  14. package/cjs/canvas/contributions/node/modules.js.map +1 -0
  15. package/cjs/common/canvas-utils.d.ts +2 -1
  16. package/cjs/common/canvas-utils.js +20 -7
  17. package/cjs/common/canvas-utils.js.map +1 -1
  18. package/cjs/core/contributions/env/feishu-contribution.js +1 -1
  19. package/cjs/core/contributions/env/feishu-contribution.js.map +1 -1
  20. package/cjs/core/contributions/env/modules.js +2 -1
  21. package/cjs/core/contributions/env/modules.js.map +1 -1
  22. package/cjs/core/contributions/env/node-contribution.d.ts +47 -0
  23. package/cjs/core/contributions/env/node-contribution.js +89 -0
  24. package/cjs/core/contributions/env/node-contribution.js.map +1 -0
  25. package/cjs/core/contributions/window/modules.js +3 -2
  26. package/cjs/core/contributions/window/modules.js.map +1 -1
  27. package/cjs/core/contributions/window/node-contribution.d.ts +40 -1
  28. package/cjs/core/contributions/window/node-contribution.js +106 -0
  29. package/cjs/core/contributions/window/node-contribution.js.map +1 -1
  30. package/cjs/index.d.ts +1 -1
  31. package/cjs/index.js +1 -1
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/interface/context.d.ts +3 -3
  34. package/cjs/interface/context.js.map +1 -1
  35. package/cjs/render/contributions/render/path-render.js +3 -3
  36. package/cjs/render/contributions/render/path-render.js.map +1 -1
  37. package/cjs/render/contributions/render/symbol-render.js +3 -3
  38. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  39. package/dist/index.js +1 -1
  40. package/dist/index.min.js +1 -1
  41. package/es/canvas/contributions/modules.js +3 -1
  42. package/es/canvas/contributions/modules.js.map +1 -1
  43. package/es/canvas/contributions/node/canvas.d.ts +48 -0
  44. package/es/canvas/contributions/node/canvas.js +104 -0
  45. package/es/canvas/contributions/node/canvas.js.map +1 -0
  46. package/es/canvas/contributions/node/context.d.ts +7 -0
  47. package/es/canvas/contributions/node/context.js +31 -0
  48. package/es/canvas/contributions/node/context.js.map +1 -0
  49. package/es/canvas/contributions/node/index.d.ts +2 -0
  50. package/es/canvas/contributions/node/index.js +4 -0
  51. package/es/canvas/contributions/node/index.js.map +1 -0
  52. package/es/canvas/contributions/node/modules.d.ts +3 -0
  53. package/es/canvas/contributions/node/modules.js +13 -0
  54. package/es/canvas/contributions/node/modules.js.map +1 -0
  55. package/es/common/canvas-utils.d.ts +2 -1
  56. package/es/common/canvas-utils.js +20 -7
  57. package/es/common/canvas-utils.js.map +1 -1
  58. package/es/core/contributions/env/feishu-contribution.js +1 -1
  59. package/es/core/contributions/env/feishu-contribution.js.map +1 -1
  60. package/es/core/contributions/env/modules.js +3 -0
  61. package/es/core/contributions/env/modules.js.map +1 -1
  62. package/es/core/contributions/env/node-contribution.d.ts +47 -0
  63. package/es/core/contributions/env/node-contribution.js +86 -0
  64. package/es/core/contributions/env/node-contribution.js.map +1 -0
  65. package/es/core/contributions/window/modules.js +4 -1
  66. package/es/core/contributions/window/modules.js.map +1 -1
  67. package/es/core/contributions/window/node-contribution.d.ts +40 -1
  68. package/es/core/contributions/window/node-contribution.js +108 -0
  69. package/es/core/contributions/window/node-contribution.js.map +1 -1
  70. package/es/index.d.ts +1 -1
  71. package/es/index.js +1 -1
  72. package/es/index.js.map +1 -1
  73. package/es/interface/context.d.ts +3 -3
  74. package/es/interface/context.js.map +1 -1
  75. package/es/render/contributions/render/path-render.js +3 -3
  76. package/es/render/contributions/render/path-render.js.map +1 -1
  77. package/es/render/contributions/render/symbol-render.js +3 -3
  78. package/es/render/contributions/render/symbol-render.js.map +1 -1
  79. package/es/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +1 -1
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: !0
11
+ }), exports.NodeEnvContribution = void 0;
12
+
13
+ const inversify_1 = require("inversify"), base_contribution_1 = require("./base-contribution");
14
+
15
+ let NodeEnvContribution = class extends base_contribution_1.BaseEnvContribution {
16
+ constructor() {
17
+ super(...arguments), this.type = "node", this._lastTime = 0, this.supportEvent = !1;
18
+ }
19
+ configure(service, pkg) {
20
+ service.env === this.type && (service.setActiveEnvContribution(this), this.pkg = pkg);
21
+ }
22
+ loadJson(url) {
23
+ const jsonPromise = fetch(url).then((data => data.json()));
24
+ return jsonPromise.then((json => ({
25
+ data: json,
26
+ state: "success"
27
+ }))).catch((() => ({
28
+ data: null,
29
+ state: "fail"
30
+ }))), jsonPromise;
31
+ }
32
+ loadArrayBuffer(url) {
33
+ return fetch(url).then((data => data.arrayBuffer())).then((arrayBuffer => ({
34
+ data: arrayBuffer,
35
+ loadState: "success"
36
+ }))).catch((() => ({
37
+ data: null,
38
+ loadState: "fail"
39
+ })));
40
+ }
41
+ loadImage(url) {
42
+ const {loadImage: loadImage} = this.pkg;
43
+ return loadImage ? loadImage(url).then((image => ({
44
+ loadState: image ? "success" : "fail",
45
+ data: image
46
+ }))).catch((() => ({
47
+ loadState: "fail",
48
+ data: null
49
+ }))) : Promise.reject(new Error("node-canvas loadImage could not be found!"));
50
+ }
51
+ loadSvg(svgStr) {
52
+ const Resvg = this.pkg.Resvg;
53
+ if (!Resvg) return Promise.reject(new Error("@resvg/resvg-js svgParser could not be found!"));
54
+ const pngData = new Resvg(svgStr).render().asPng();
55
+ return this.loadImage(pngData);
56
+ }
57
+ createCanvas(params) {
58
+ return this.pkg.createCanvas(params.width, params.height);
59
+ }
60
+ releaseCanvas(canvas) {}
61
+ getDevicePixelRatio() {
62
+ return 0;
63
+ }
64
+ getRequestAnimationFrame() {
65
+ return function(callback) {
66
+ return setTimeout(callback, 1e3 / 60, !0);
67
+ };
68
+ }
69
+ getCancelAnimationFrame() {
70
+ return h => {
71
+ clearTimeout(h);
72
+ };
73
+ }
74
+ addEventListener(type, listener, options) {}
75
+ removeEventListener(type, listener, options) {}
76
+ getElementById(str) {
77
+ return null;
78
+ }
79
+ getRootElement() {
80
+ return null;
81
+ }
82
+ dispatchEvent(event) {}
83
+ release(...params) {}
84
+ createOffscreenCanvas(params) {}
85
+ };
86
+
87
+ NodeEnvContribution = __decorate([ (0, inversify_1.injectable)() ], NodeEnvContribution),
88
+ exports.NodeEnvContribution = NodeEnvContribution;
89
+ //# sourceMappingURL=node-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/contributions/env/node-contribution.ts"],"names":[],"mappings":"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","file":"node-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { loadTaroContributions } from '../../../kits';\nimport { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal } from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { createImageElement } from './browser-contribution';\n\ntype Canvas = any;\n\ntype NodePkg = {\n createCanvas: (width: number, height: number, type?: 'pdf' | 'svg') => Canvas;\n createImageData: (data: Uint8ClampedArray, width: number, height?: number) => ImageData;\n loadImage: (src: string | any, options?: any) => Promise<any>;\n Resvg?: any;\n};\n\n// let last = 0;\n// function nodeRequestAnimationFrame(callback: FrameRequestCallback) {\n// const now = Date.now();\n// const timeLeft = Math.max(0, 16 - (now - last));\n// const id = setTimeout(function () {\n// callback(now + timeLeft);\n// }, timeLeft);\n// last = now + timeLeft;\n// return id;\n// }\n\n@injectable()\nexport class NodeEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'node';\n pkg: NodePkg;\n _lastTime: number = 0;\n supportEvent: boolean = false;\n\n configure(service: IGlobal, pkg: NodePkg) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n this.pkg = pkg;\n }\n }\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json()) as Promise<any>; // ignore_security_alert\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer()); // ignore_security_alert\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n const { loadImage } = this.pkg;\n if (loadImage) {\n return loadImage(url)\n .then((image: any) => {\n const loadState: 'success' | 'fail' = image ? 'success' : 'fail';\n return {\n loadState,\n data: image as HTMLImageElement\n };\n })\n .catch(() => {\n return {\n loadState: 'fail',\n data: null\n } as any;\n });\n }\n return Promise.reject(new Error('node-canvas loadImage could not be found!'));\n }\n\n // 此处的\n loadSvg(svgStr: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | null;\n }> {\n // // eslint-disable-next-line @typescript-eslint/no-var-requires\n // const { Resvg } = require('@resvg/resvg-js');\n const Resvg = this.pkg.Resvg;\n if (!Resvg) {\n return Promise.reject(new Error('@resvg/resvg-js svgParser could not be found!'));\n }\n const resvg = new Resvg(svgStr);\n const pngData = resvg.render().asPng();\n return this.loadImage(pngData as unknown as string);\n }\n\n createCanvas(params: any): Canvas {\n const canvas = this.pkg.createCanvas(params.width, params.height);\n return canvas;\n }\n\n releaseCanvas(canvas: Canvas | any) {\n return;\n }\n\n getDevicePixelRatio(): number {\n return 0;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return function (callback: FrameRequestCallback) {\n return setTimeout(callback, 1000 / 60, true);\n } as any;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return (h: number) => {\n clearTimeout(h);\n };\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getElementById(str: string): HTMLElement | null {\n return null;\n }\n\n getRootElement(): HTMLElement | null {\n return null;\n }\n\n dispatchEvent(event: any): boolean {\n return;\n }\n\n release(...params: any): void {\n return;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n return;\n }\n}\n"]}
@@ -4,12 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
6
 
7
- const inversify_1 = require("inversify"), window_1 = require("../../window"), browser_contribution_1 = require("./browser-contribution"), feishu_contribution_1 = require("./feishu-contribution"), taro_contribution_1 = require("./taro-contribution"), lynx_contribution_1 = require("./lynx-contribution");
7
+ const inversify_1 = require("inversify"), window_1 = require("../../window"), browser_contribution_1 = require("./browser-contribution"), feishu_contribution_1 = require("./feishu-contribution"), taro_contribution_1 = require("./taro-contribution"), lynx_contribution_1 = require("./lynx-contribution"), node_contribution_1 = require("./node-contribution");
8
8
 
9
9
  exports.default = new inversify_1.ContainerModule((bind => {
10
10
  bind(browser_contribution_1.BrowserWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(browser_contribution_1.BrowserWindowHandlerContribution))).whenTargetNamed(browser_contribution_1.BrowserWindowHandlerContribution.env),
11
11
  bind(feishu_contribution_1.FeishuWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(feishu_contribution_1.FeishuWindowHandlerContribution))).whenTargetNamed(feishu_contribution_1.FeishuWindowHandlerContribution.env),
12
12
  bind(taro_contribution_1.TaroWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(taro_contribution_1.TaroWindowHandlerContribution))).whenTargetNamed(taro_contribution_1.TaroWindowHandlerContribution.env),
13
- bind(lynx_contribution_1.LynxWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(lynx_contribution_1.LynxWindowHandlerContribution))).whenTargetNamed(lynx_contribution_1.LynxWindowHandlerContribution.env);
13
+ bind(lynx_contribution_1.LynxWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(lynx_contribution_1.LynxWindowHandlerContribution))).whenTargetNamed(lynx_contribution_1.LynxWindowHandlerContribution.env),
14
+ bind(node_contribution_1.NodeWindowHandlerContribution).toSelf(), bind(window_1.WindowHandlerContribution).toDynamicValue((ctx => ctx.container.get(node_contribution_1.NodeWindowHandlerContribution))).whenTargetNamed(node_contribution_1.NodeWindowHandlerContribution.env);
14
15
  }));
15
16
  //# sourceMappingURL=modules.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/window/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,yCAAyD;AACzD,iEAA0E;AAC1E,+DAAwE;AACxE,2DAAoE;AACpE,2DAAoE;AAGpE,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAExC,IAAI,CAAC,uDAAgC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChD,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,uDAAgC,CAAC,CAAC;SAC1E,eAAe,CAAC,uDAAgC,CAAC,GAAG,CAAC,CAAC;IAGzD,IAAI,CAAC,qDAA+B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,qDAA+B,CAAC,CAAC;SACzE,eAAe,CAAC,qDAA+B,CAAC,GAAG,CAAC,CAAC;IAGxD,IAAI,CAAC,iDAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iDAA6B,CAAC,CAAC;SACvE,eAAe,CAAC,iDAA6B,CAAC,GAAG,CAAC,CAAC;IAGtD,IAAI,CAAC,iDAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iDAA6B,CAAC,CAAC;SACvE,eAAe,CAAC,iDAA6B,CAAC,GAAG,CAAC,CAAC;AAIxD,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { WindowHandlerContribution } from '../../window';\nimport { BrowserWindowHandlerContribution } from './browser-contribution';\nimport { FeishuWindowHandlerContribution } from './feishu-contribution';\nimport { TaroWindowHandlerContribution } from './taro-contribution';\nimport { LynxWindowHandlerContribution } from './lynx-contribution';\n// import { NodeWindowHandlerContribution } from './node-contribution';\n\nexport default new ContainerModule(bind => {\n // browser\n bind(BrowserWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(BrowserWindowHandlerContribution))\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n\n // feishu\n bind(FeishuWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(FeishuWindowHandlerContribution))\n .whenTargetNamed(FeishuWindowHandlerContribution.env);\n\n // taro\n bind(TaroWindowHandlerContribution).toSelf();\n\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(TaroWindowHandlerContribution))\n .whenTargetNamed(TaroWindowHandlerContribution.env);\n\n // lynx\n bind(LynxWindowHandlerContribution).toSelf();\n\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(LynxWindowHandlerContribution))\n .whenTargetNamed(LynxWindowHandlerContribution.env);\n // bind(NodeWindowHandlerContribution).toSelf().inSingletonScope();\n // bind(WindowHandlerContribution).toService(NodeWindowHandlerContribution);\n // bindContributionProvider(bind, WindowHandlerContribution);\n});\n"]}
1
+ {"version":3,"sources":["../../src/core/contributions/window/modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,yCAAyD;AACzD,iEAA0E;AAC1E,+DAAwE;AACxE,2DAAoE;AACpE,2DAAoE;AACpE,2DAAoE;AAGpE,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAExC,IAAI,CAAC,uDAAgC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChD,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,uDAAgC,CAAC,CAAC;SAC1E,eAAe,CAAC,uDAAgC,CAAC,GAAG,CAAC,CAAC;IAGzD,IAAI,CAAC,qDAA+B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,qDAA+B,CAAC,CAAC;SACzE,eAAe,CAAC,qDAA+B,CAAC,GAAG,CAAC,CAAC;IAGxD,IAAI,CAAC,iDAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iDAA6B,CAAC,CAAC;SACvE,eAAe,CAAC,iDAA6B,CAAC,GAAG,CAAC,CAAC;IAGtD,IAAI,CAAC,iDAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iDAA6B,CAAC,CAAC;SACvE,eAAe,CAAC,iDAA6B,CAAC,GAAG,CAAC,CAAC;IAGtD,IAAI,CAAC,iDAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,CAAC,kCAAyB,CAAC;SAC5B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iDAA6B,CAAC,CAAC;SACvE,eAAe,CAAC,iDAA6B,CAAC,GAAG,CAAC,CAAC;AAIxD,CAAC,CAAC,CAAC","file":"modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { WindowHandlerContribution } from '../../window';\nimport { BrowserWindowHandlerContribution } from './browser-contribution';\nimport { FeishuWindowHandlerContribution } from './feishu-contribution';\nimport { TaroWindowHandlerContribution } from './taro-contribution';\nimport { LynxWindowHandlerContribution } from './lynx-contribution';\nimport { NodeWindowHandlerContribution } from './node-contribution';\n// import { NodeWindowHandlerContribution } from './node-contribution';\n\nexport default new ContainerModule(bind => {\n // browser\n bind(BrowserWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(BrowserWindowHandlerContribution))\n .whenTargetNamed(BrowserWindowHandlerContribution.env);\n\n // feishu\n bind(FeishuWindowHandlerContribution).toSelf();\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(FeishuWindowHandlerContribution))\n .whenTargetNamed(FeishuWindowHandlerContribution.env);\n\n // taro\n bind(TaroWindowHandlerContribution).toSelf();\n\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(TaroWindowHandlerContribution))\n .whenTargetNamed(TaroWindowHandlerContribution.env);\n\n // lynx\n bind(LynxWindowHandlerContribution).toSelf();\n\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(LynxWindowHandlerContribution))\n .whenTargetNamed(LynxWindowHandlerContribution.env);\n\n // node\n bind(NodeWindowHandlerContribution).toSelf();\n\n bind(WindowHandlerContribution)\n .toDynamicValue(ctx => ctx.container.get(NodeWindowHandlerContribution))\n .whenTargetNamed(NodeWindowHandlerContribution.env);\n // bind(NodeWindowHandlerContribution).toSelf().inSingletonScope();\n // bind(WindowHandlerContribution).toService(NodeWindowHandlerContribution);\n // bindContributionProvider(bind, WindowHandlerContribution);\n});\n"]}
@@ -1 +1,40 @@
1
-
1
+ import { IBoundsLike } from '@visactor/vutils';
2
+ import { BaseWindowHandlerContribution } from './base-contribution';
3
+ import { IWindowHandlerContribution, IWindowParams } from '../..';
4
+ import { EnvType, IGlobal, IContext2d, ICanvas, IDomRectLike } from '../../../interface';
5
+ export declare class NodeWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {
6
+ private readonly global;
7
+ static env: EnvType;
8
+ type: EnvType;
9
+ canvas: ICanvas;
10
+ get container(): HTMLElement | null;
11
+ constructor(global: IGlobal);
12
+ getTitle(): string;
13
+ getWH(): {
14
+ width: number;
15
+ height: number;
16
+ };
17
+ getXY(): {
18
+ x: number;
19
+ y: number;
20
+ };
21
+ createWindow(params: IWindowParams): void;
22
+ private createWindowByConfig;
23
+ private createWindowByCanvas;
24
+ releaseWindow(): void;
25
+ resizeWindow(width: number, height: number): void;
26
+ setDpr(dpr: number): void;
27
+ getContext(): IContext2d;
28
+ getNativeHandler(): ICanvas;
29
+ getDpr(): number;
30
+ getImageBuffer(type?: string): any;
31
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
32
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
33
+ dispatchEvent(event: any): boolean;
34
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
35
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
36
+ getStyle(): CSSStyleDeclaration | Record<string, any>;
37
+ setStyle(style: CSSStyleDeclaration | Record<string, any>): void;
38
+ getBoundingClientRect(): IDomRectLike;
39
+ clearViewBox(vb: IBoundsLike, color?: string): void;
40
+ }
@@ -1,3 +1,109 @@
1
+ "use strict";
1
2
 
3
+ var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }, __metadata = this && this.__metadata || function(k, v) {
8
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
+ }, __param = this && this.__param || function(paramIndex, decorator) {
10
+ return function(target, key) {
11
+ decorator(target, key, paramIndex);
12
+ };
13
+ };
2
14
 
15
+ Object.defineProperty(exports, "__esModule", {
16
+ value: !0
17
+ }), exports.NodeWindowHandlerContribution = void 0;
18
+
19
+ const inversify_1 = require("inversify"), node_1 = require("../../../canvas/contributions/node"), generator_1 = require("../../../common/generator"), base_contribution_1 = require("./base-contribution"), interface_1 = require("../../../interface");
20
+
21
+ let NodeWindowHandlerContribution = class extends base_contribution_1.BaseWindowHandlerContribution {
22
+ get container() {
23
+ return null;
24
+ }
25
+ constructor(global) {
26
+ super(), this.global = global, this.type = "node";
27
+ }
28
+ getTitle() {
29
+ return "";
30
+ }
31
+ getWH() {
32
+ return {
33
+ width: this.canvas.displayWidth,
34
+ height: this.canvas.displayHeight
35
+ };
36
+ }
37
+ getXY() {
38
+ return {
39
+ x: 0,
40
+ y: 0
41
+ };
42
+ }
43
+ createWindow(params) {
44
+ params.canvas ? this.createWindowByCanvas(params) : this.createWindowByConfig(params);
45
+ }
46
+ createWindowByConfig(params) {
47
+ const nativeCanvas = this.global.createCanvas({
48
+ width: params.width,
49
+ height: params.height
50
+ }), options = {
51
+ width: params.width,
52
+ height: params.height,
53
+ dpr: params.dpr,
54
+ nativeCanvas: nativeCanvas,
55
+ id: generator_1.Generator.GenAutoIncrementId().toString(),
56
+ canvasControled: !0
57
+ };
58
+ this.canvas = new node_1.NodeCanvas(options);
59
+ }
60
+ createWindowByCanvas(params) {
61
+ const canvas = params.canvas;
62
+ let width = params.width, height = params.height;
63
+ null != width && null != height && params.canvasControled || (width = canvas.width,
64
+ height = canvas.height), this.canvas = new node_1.NodeCanvas({
65
+ width: width,
66
+ height: height,
67
+ dpr: 1,
68
+ nativeCanvas: canvas,
69
+ canvasControled: params.canvasControled
70
+ });
71
+ }
72
+ releaseWindow() {
73
+ this.canvas.release();
74
+ }
75
+ resizeWindow(width, height) {
76
+ this.canvas.resize(width, height);
77
+ }
78
+ setDpr(dpr) {
79
+ this.canvas.dpr = dpr;
80
+ }
81
+ getContext() {
82
+ return this.canvas.getContext();
83
+ }
84
+ getNativeHandler() {
85
+ return this.canvas;
86
+ }
87
+ getDpr() {
88
+ return this.canvas.dpr;
89
+ }
90
+ getImageBuffer(type = "image/png") {
91
+ return this.canvas.nativeCanvas.toBuffer(type);
92
+ }
93
+ addEventListener(type, listener, options) {}
94
+ dispatchEvent(event) {
95
+ return !0;
96
+ }
97
+ removeEventListener(type, listener, options) {}
98
+ getStyle() {}
99
+ setStyle(style) {}
100
+ getBoundingClientRect() {
101
+ return null;
102
+ }
103
+ clearViewBox(vb, color) {}
104
+ };
105
+
106
+ NodeWindowHandlerContribution.env = "node", NodeWindowHandlerContribution = __decorate([ (0,
107
+ inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(interface_1.Global)), __metadata("design:paramtypes", [ Object ]) ], NodeWindowHandlerContribution),
108
+ exports.NodeWindowHandlerContribution = NodeWindowHandlerContribution;
3
109
  //# sourceMappingURL=node-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/contributions/window/node-contribution.ts"],"names":[],"mappings":"","file":"node-contribution.js","sourcesContent":["// import { createCanvas, createImageData, loadImage } from 'canvas';\n// import { inject, injectable } from 'inversify';\n// import { Canvas } from '../../../canvas';\n// import { Generator } from '../../../common/generator';\n// import { Global, IWindow, EnvType, IGlobal, IWindowHandlerContribution, IWindowParams } from '../..';\n// import { BaseWindowHandlerContribution } from './base-contribution';\n// import { ICanvas } from '../../../interface/canvas';\n\n// type NodePkg = {\n// createCanvas: typeof createCanvas;\n// createImageData: typeof createImageData;\n// loadImage: typeof loadImage;\n// };\n\n// @injectable()\n// export class NodeWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {\n// type: EnvType = 'node';\n\n// pkg: NodePkg;\n\n// configure(window: IWindow, global: IGlobal) {\n// if (global.env === this.type) {\n// window.setWindowHandler(this);\n// this.pkg = global.envParams;\n// }\n// }\n\n// canvas: Canvas;\n// get container(): HTMLElement | null {\n// return this.canvas.nativeCanvas.parentElement;\n// }\n\n// constructor(@inject(Global) private readonly global: IGlobal) {\n// super();\n// }\n\n// createWindow(params: IWindowParams): void {\n// // 如果没有传入canvas,那么就创建一个canvas\n// if (!params.canvas) {\n// this.createWindowByConfig(params);\n// } else {\n// this.createWindowByCanvas(params);\n// }\n// }\n// private createWindowByConfig(params: IWindowParams) {\n// // 创建canvas\n// const nativeCanvas = this.global.createCanvas({ width: params.width, height: params.height });\n\n// // 绑定\n// const options = {\n// width: params.width,\n// height: params.height,\n// dpr: params.dpr,\n// nativeCanvas,\n// id: Generator.GenAutoIncrementId().toString()\n// };\n// this.canvas = new Canvas(options);\n// }\n// private createWindowByCanvas(params: IWindowParams) {\n// // 获取canvas\n// let canvas: HTMLCanvasElement | null;\n// if (typeof params.canvas === 'string') {\n// throw new Error('node环境不允许传入canvasId获取canvas');\n// } else {\n// canvas = params!.canvas as HTMLCanvasElement | null;\n// }\n// if (!canvas) {\n// throw new Error('发生错误,传入的canvas不正确');\n// }\n\n// this.canvas = new Canvas({\n// width: params.width,\n// height: params.height,\n// dpr: params.dpr,\n// nativeCanvas: canvas\n// });\n// }\n// destroyWindow(): void {\n// this.canvas.destroy();\n// }\n// resizeWindow(width: number, height: number): void {\n// this.canvas.resize(width, height);\n// }\n// setDpr(dpr: number): void {\n// this.canvas.dpr = dpr;\n// }\n\n// getNativeHandler(): ICanvas {\n// return this.canvas;\n// }\n// getDpr(): number {\n// return this.canvas.dpr;\n// }\n// getContext(): any {\n// throw new Error('暂不支持');\n// }\n// getTitle(): string {\n// throw new Error('暂不支持');\n// }\n// getWH(): { width: number; height: number } {\n// throw new Error('暂不支持');\n// }\n// getXY(): { x: number; y: number } {\n// throw new Error('暂不支持');\n// }\n// }\n"]}
1
+ {"version":3,"sources":["../../src/core/contributions/window/node-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA+C;AAE/C,6DAAgE;AAChE,yDAAsD;AACtD,2DAAoE;AAEpE,kDAAiG;AAG1F,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,iDAA6B;IAK9E,IAAI,SAAS;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAA6C,MAAe;QAC1D,KAAK,EAAE,CAAC;QADmC,WAAM,GAAN,MAAM,CAAS;QAP5D,SAAI,GAAY,MAAM,CAAC;IASvB,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK;QACH,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,MAAqB;QAEhC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACnC;IACH,CAAC;IACO,oBAAoB,CAAC,MAAqB;QAEhD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAG9F,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY;YACZ,EAAE,EAAE,qBAAS,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE;YAC7C,eAAe,EAAE,IAAI;SACtB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAU,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACO,oBAAoB,CAAC,MAAqB;QAEhD,MAAM,MAAM,GAAG,MAAO,CAAC,MAAkC,CAAC;QAG1D,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC9D,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SACxB;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAU,CAAC;YAC3B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,CAAC;YACN,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;IACL,CAAC;IACD,aAAa;QACX,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IACD,YAAY,CAAC,KAAa,EAAE,MAAc;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IACD,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,OAAe,WAAW;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAYD,gBAAgB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QAClE,OAAO;IACT,CAAC;IAED,aAAa,CAAC,KAAU;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,mBAAmB,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAiB;QACrE,OAAO;IACT,CAAC;IAED,QAAQ;QACN,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,KAAgD;QACvD,OAAO;IACT,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,EAAe,EAAE,KAAc;QAC1C,OAAO;IACT,CAAC;;AA5IM,iCAAG,GAAY,MAAM,CAAC;AADlB,6BAA6B;IADzC,IAAA,sBAAU,GAAE;IAUE,WAAA,IAAA,kBAAM,EAAC,kBAAM,CAAC,CAAA;;GAThB,6BAA6B,CA8IzC;AA9IY,sEAA6B","file":"node-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { IBoundsLike } from '@visactor/vutils';\nimport { NodeCanvas } from '../../../canvas/contributions/node';\nimport { Generator } from '../../../common/generator';\nimport { BaseWindowHandlerContribution } from './base-contribution';\nimport { IWindowHandlerContribution, IWindowParams } from '../..';\nimport { Global, EnvType, IGlobal, IContext2d, ICanvas, IDomRectLike } from '../../../interface';\n\n@injectable()\nexport class NodeWindowHandlerContribution extends BaseWindowHandlerContribution implements IWindowHandlerContribution {\n static env: EnvType = 'node';\n type: EnvType = 'node';\n\n canvas: ICanvas;\n get container(): HTMLElement | null {\n return null;\n }\n\n constructor(@inject(Global) private readonly global: IGlobal) {\n super();\n }\n\n getTitle(): string {\n return '';\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.displayWidth,\n height: this.canvas.displayHeight\n };\n }\n\n getXY(): { x: number; y: number } {\n return { x: 0, y: 0 };\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n }\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({ width: params.width, height: params.height });\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n id: Generator.GenAutoIncrementId().toString(),\n canvasControled: true\n };\n this.canvas = new NodeCanvas(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n const canvas = params!.canvas as HTMLCanvasElement | null;\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n width = canvas.width;\n height = canvas.height;\n }\n\n this.canvas = new NodeCanvas({\n width: width,\n height: height,\n dpr: 1,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled\n });\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n getImageBuffer(type: string = 'image/png'): any {\n const canvas = this.canvas.nativeCanvas;\n return canvas.toBuffer(type);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n dispatchEvent(event: any): boolean {\n return true;\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return;\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return;\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>): void {\n return;\n }\n\n getBoundingClientRect(): IDomRectLike {\n return null;\n }\n\n clearViewBox(vb: IBoundsLike, color?: string): void {\n return;\n }\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'reflect-metadata';
2
2
  import './modules';
3
- export declare const version = "0.10.1";
3
+ export declare const version = "0.10.2";
4
4
  export * from './container';
5
5
  export * from './core/global';
6
6
  export * from './graphic';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.version = void 0, require("reflect-metadata"), require("./modules"),
21
- exports.version = "0.10.1", __exportStar(require("./container"), exports), __exportStar(require("./core/global"), exports),
21
+ exports.version = "0.10.2", __exportStar(require("./container"), exports), __exportStar(require("./core/global"), exports),
22
22
  __exportStar(require("./graphic"), exports), __exportStar(require("./modules"), exports),
23
23
  __exportStar(require("./create"), exports), __exportStar(require("./event"), exports),
24
24
  __exportStar(require("./interface"), exports), __exportStar(require("./render"), exports),
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,qBAAmB;AAGN,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,4CAA0B;AAC1B,2DAAyC;AAGzC,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AAEpC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAE/B,2DAAyC","file":"index.js","sourcesContent":["import 'reflect-metadata';\nimport './modules';\n\n// 导出版本号\nexport const version = \"0.10.1\";\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './kits';\nexport * from './animate';\nexport * from './resource-loader/loader';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\n\nexport * from './animate/default-ticker';\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,qBAAmB;AAGN,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,4CAA0B;AAC1B,2DAAyC;AAGzC,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AAEpC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAE/B,2DAAyC","file":"index.js","sourcesContent":["import 'reflect-metadata';\nimport './modules';\n\n// 导出版本号\nexport const version = \"0.10.2\";\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './kits';\nexport * from './animate';\nexport * from './resource-loader/loader';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\n\nexport * from './animate/default-ticker';\n"]}
@@ -3,7 +3,7 @@ import { ICamera } from './camera';
3
3
  import { ICanvas } from './canvas';
4
4
  import { Releaseable } from './common';
5
5
  import { mat4, vec3 } from './matrix';
6
- import { IFillType, IStrokeType } from './graphic';
6
+ import { IFillType, IStrokeType, ITransform } from './graphic';
7
7
  export interface IConicalGradientData {
8
8
  addColorStop: (pos: number, color: string) => void;
9
9
  readonly stops: [number, string][];
@@ -39,11 +39,11 @@ export interface ITextStyleParams {
39
39
  textBaseline?: CanvasTextBaseline;
40
40
  }
41
41
  export interface ISetCommonStyleParams {
42
- attribute: Partial<ICommonStyleParams>;
42
+ attribute: Partial<ICommonStyleParams & ITransform>;
43
43
  AABBBounds: IBoundsLike;
44
44
  }
45
45
  export interface ISetStrokeStyleParams {
46
- attribute: Partial<IStrokeStyleParams>;
46
+ attribute: Partial<IStrokeStyleParams & ITransform>;
47
47
  AABBBounds: IBoundsLike;
48
48
  }
49
49
  export interface IContext2d extends Releaseable {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/interface/context.ts"],"names":[],"mappings":"","file":"context.js","sourcesContent":["import { Matrix, IMatrix, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { ICamera } from './camera';\nimport { ICanvas } from './canvas';\nimport { Releaseable } from './common';\nimport { mat4, vec3 } from './matrix';\nimport { IFillType, IStrokeType } from './graphic';\n\nexport interface IConicalGradientData {\n addColorStop: (pos: number, color: string) => void;\n readonly stops: [number, string][];\n GetPattern: (minW: number, minH: number, deltaAngle?: number) => CanvasPattern | null;\n}\n\n// 用于commonStyle函数的参数\nexport interface ICommonStyleParams {\n fill?: IFillType;\n fillOpacity?: number;\n shadowBlur?: number;\n shadowColor?: string;\n shadowOffsetX?: number;\n shadowOffsetY?: number;\n opacity?: number;\n blur?: number;\n}\n\nexport interface IStrokeStyleParams {\n stroke?: IStrokeType | IStrokeType[];\n strokeOpacity?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n lineWidth?: number;\n lineCap?: CanvasLineCap;\n lineJoin?: CanvasLineJoin;\n miterLimit?: number;\n opacity?: number;\n}\nexport interface ITextStyleParams {\n font?: string;\n fontSize: number;\n fontFamily?: string;\n fontWeight?: string | number;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n}\n\nexport interface ISetCommonStyleParams {\n attribute: Partial<ICommonStyleParams>;\n AABBBounds: IBoundsLike;\n}\n\nexport interface ISetStrokeStyleParams {\n attribute: Partial<IStrokeStyleParams>;\n AABBBounds: IBoundsLike;\n}\nexport interface IContext2d extends Releaseable {\n stack: IMatrix[];\n inuse?: boolean;\n camera?: ICamera;\n modelMatrix?: mat4;\n drawPromise?: Promise<any>;\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n disableFill?: boolean;\n disableStroke?: boolean;\n disableBeginPath?: boolean;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n canvas: ICanvas;\n [key: string]: any; //类型没有索引签名\n\n getCanvas: () => ICanvas;\n\n getContext: () => any;\n\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent: (force?: boolean) => void;\n /**\n * 获取当前矩阵信息\n */\n currentMatrix: IMatrix;\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n highPerformanceRestore: () => void;\n\n /**\n *\n * @param angle 弧度数\n */\n rotate: (angle: number, setTransform?: boolean) => void;\n\n save: () => void;\n highPerformanceSave: () => void;\n\n project?: (x: number, y: number, z?: number) => IPointLike;\n view?: (x: number, y: number, z?: number) => vec3;\n\n scale: (x: number, y: number, setTransform?: boolean) => void;\n\n scalePoint: (sx: number, sy: number, px: number, py: number, setTransform?: boolean) => void;\n transform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean\n ) => void;\n transformFromMatrix: (matrix: Matrix, setTransform?: boolean) => void;\n setTransform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean,\n dpr?: number\n ) => void;\n setTransformFromMatrix: (matrix: Matrix, setTransform?: boolean, dpr?: number) => void;\n\n resetTransform: (setTransform?: boolean, dpr?: number) => void;\n\n translate: (x: number, y: number, setTransform?: boolean) => void;\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees: (deg: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout: (rad: number, x: number, y: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout: (deg: number, x: number, y: number, setTransform?: boolean) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean,\n z?: number\n ) => void;\n\n arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void;\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number, z?: number) => void;\n\n moveTo: (x: number, y: number, z?: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number, z?: number) => void;\n\n rect: (x: number, y: number, w: number, h: number, z?: number) => void;\n\n createImageData: (imageDataOrSw: number | ImageData, sh?: number) => ImageData;\n\n createLinearGradient: (x0: number, y0: number, x1: number, y1: number) => CanvasGradient;\n\n createPattern: (\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ICanvas | any,\n repetition: string\n ) => CanvasPattern | null;\n\n createRadialGradient: (x0: number, y0: number, r0: number, x1: number, y1: number, r1: number) => CanvasGradient;\n\n createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradientData | null;\n\n // createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradient | null;\n\n // fill(fillRule?: CanvasFillRule): void;\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, z?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (imagedata: ImageData, dx: number, dy: number) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, z?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n setCommonStyle: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setShadowStyle?: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setStrokeStyle: (\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: Required<IStrokeStyleParams> | Partial<IStrokeStyleParams>[]\n ) => void;\n\n setTextStyle: (params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams, z?: number) => void;\n setTextStyleWithoutAlignBaseline: (\n params: Partial<ITextStyleParams>,\n defaultParams?: ITextStyleParams,\n z?: number\n ) => void;\n\n draw: (...params: any) => void;\n\n clearMatrix: (setTransform?: boolean, dpr?: number) => void;\n onlyTranslate: (dpr?: number) => boolean;\n}\n\nexport interface IContextLike {\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n [key: string]: any; //类型没有索引签名\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n\n save: () => void;\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n\n translate: (x: number, y: number) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) => void;\n\n arcTo: ((x1: number, y1: number, x2: number, y2: number, radius: number) => void) &\n ((x1: number, y1: number, x2: number, y2: number, radiusX: number, radiusY: number, rotation: number) => void);\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number) => void;\n\n moveTo: (x: number, y: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n\n rect: (x: number, y: number, w: number, h: number) => void;\n\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (\n imagedata: ImageData,\n dx: number,\n dy: number,\n dirtyX?: number,\n dirtyY?: number,\n dirtyWidth?: number,\n dirtyHeight?: number\n ) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n clearMatrix: () => void;\n onlyTranslate: () => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../../src/interface/context.ts"],"names":[],"mappings":"","file":"context.js","sourcesContent":["import { Matrix, IMatrix, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { ICamera } from './camera';\nimport { ICanvas } from './canvas';\nimport { Releaseable } from './common';\nimport { mat4, vec3 } from './matrix';\nimport { IFillType, IStrokeType, ITransform } from './graphic';\n\nexport interface IConicalGradientData {\n addColorStop: (pos: number, color: string) => void;\n readonly stops: [number, string][];\n GetPattern: (minW: number, minH: number, deltaAngle?: number) => CanvasPattern | null;\n}\n\n// 用于commonStyle函数的参数\nexport interface ICommonStyleParams {\n fill?: IFillType;\n fillOpacity?: number;\n shadowBlur?: number;\n shadowColor?: string;\n shadowOffsetX?: number;\n shadowOffsetY?: number;\n opacity?: number;\n blur?: number;\n}\n\nexport interface IStrokeStyleParams {\n stroke?: IStrokeType | IStrokeType[];\n strokeOpacity?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n lineWidth?: number;\n lineCap?: CanvasLineCap;\n lineJoin?: CanvasLineJoin;\n miterLimit?: number;\n opacity?: number;\n}\nexport interface ITextStyleParams {\n font?: string;\n fontSize: number;\n fontFamily?: string;\n fontWeight?: string | number;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n}\n\nexport interface ISetCommonStyleParams {\n attribute: Partial<ICommonStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\n\nexport interface ISetStrokeStyleParams {\n attribute: Partial<IStrokeStyleParams & ITransform>;\n AABBBounds: IBoundsLike;\n}\nexport interface IContext2d extends Releaseable {\n stack: IMatrix[];\n inuse?: boolean;\n camera?: ICamera;\n modelMatrix?: mat4;\n drawPromise?: Promise<any>;\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n disableFill?: boolean;\n disableStroke?: boolean;\n disableBeginPath?: boolean;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n canvas: ICanvas;\n [key: string]: any; //类型没有索引签名\n\n getCanvas: () => ICanvas;\n\n getContext: () => any;\n\n /**\n * 设置当前ctx 的transform信息\n */\n setTransformForCurrent: (force?: boolean) => void;\n /**\n * 获取当前矩阵信息\n */\n currentMatrix: IMatrix;\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n highPerformanceRestore: () => void;\n\n /**\n *\n * @param angle 弧度数\n */\n rotate: (angle: number, setTransform?: boolean) => void;\n\n save: () => void;\n highPerformanceSave: () => void;\n\n project?: (x: number, y: number, z?: number) => IPointLike;\n view?: (x: number, y: number, z?: number) => vec3;\n\n scale: (x: number, y: number, setTransform?: boolean) => void;\n\n scalePoint: (sx: number, sy: number, px: number, py: number, setTransform?: boolean) => void;\n transform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean\n ) => void;\n transformFromMatrix: (matrix: Matrix, setTransform?: boolean) => void;\n setTransform: (\n m11: number,\n m12: number,\n m21: number,\n m22: number,\n dx: number,\n dy: number,\n setTransform?: boolean,\n dpr?: number\n ) => void;\n setTransformFromMatrix: (matrix: Matrix, setTransform?: boolean, dpr?: number) => void;\n\n resetTransform: (setTransform?: boolean, dpr?: number) => void;\n\n translate: (x: number, y: number, setTransform?: boolean) => void;\n /**\n * 旋转角度,自动转换为弧度\n * @param deg 角度数\n */\n rotateDegrees: (deg: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param rad 弧度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateAbout: (rad: number, x: number, y: number, setTransform?: boolean) => void;\n\n /**\n * 绕点旋转\n * @param deg 旋转角度\n * @param x 旋转中心点x\n * @param y 旋转中心点y\n */\n rotateDegreesAbout: (deg: number, x: number, y: number, setTransform?: boolean) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean,\n z?: number\n ) => void;\n\n arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void;\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number, z?: number) => void;\n\n moveTo: (x: number, y: number, z?: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number, z?: number) => void;\n\n rect: (x: number, y: number, w: number, h: number, z?: number) => void;\n\n createImageData: (imageDataOrSw: number | ImageData, sh?: number) => ImageData;\n\n createLinearGradient: (x0: number, y0: number, x1: number, y1: number) => CanvasGradient;\n\n createPattern: (\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ICanvas | any,\n repetition: string\n ) => CanvasPattern | null;\n\n createRadialGradient: (x0: number, y0: number, r0: number, x1: number, y1: number, r1: number) => CanvasGradient;\n\n createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradientData | null;\n\n // createConicGradient: (x: number, y: number, startAngle: number, endAngle: number) => IConicalGradient | null;\n\n // fill(fillRule?: CanvasFillRule): void;\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, z?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (imagedata: ImageData, dx: number, dy: number) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, z?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | ICanvas | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n setCommonStyle: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setShadowStyle?: (\n params: ISetCommonStyleParams,\n attribute: ICommonStyleParams,\n defultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]\n ) => void;\n\n setStrokeStyle: (\n params: ISetStrokeStyleParams,\n attribute: IStrokeStyleParams,\n // 用于渐变色\n offsetX: number,\n offsetY: number,\n defultParams?: Required<IStrokeStyleParams> | Partial<IStrokeStyleParams>[]\n ) => void;\n\n setTextStyle: (params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams, z?: number) => void;\n setTextStyleWithoutAlignBaseline: (\n params: Partial<ITextStyleParams>,\n defaultParams?: ITextStyleParams,\n z?: number\n ) => void;\n\n draw: (...params: any) => void;\n\n clearMatrix: (setTransform?: boolean, dpr?: number) => void;\n onlyTranslate: (dpr?: number) => boolean;\n}\n\nexport interface IContextLike {\n // 属性代理\n fillStyle: string | CanvasGradient | CanvasPattern;\n /**\n * @deprecated font方法不建议使用,请使用setTextStyle\n */\n font: string;\n globalAlpha: number;\n lineCap: string;\n lineDashOffset: number;\n lineJoin: string;\n lineWidth: number;\n miterLimit: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n dpr: number;\n /**\n * @deprecated textAlign方法不建议使用,请使用setTextStyle\n */\n textAlign: string;\n /**\n * @deprecated textBaseline方法不建议使用,请使用setTextStyle\n */\n textBaseline: string;\n nativeContext: CanvasRenderingContext2D | any;\n [key: string]: any; //类型没有索引签名\n\n /**\n * 清空画布\n */\n clear: () => void;\n\n restore: () => void;\n\n save: () => void;\n\n // transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void;\n\n translate: (x: number, y: number) => void;\n\n beginPath: () => void;\n\n clip: ((fillRule?: CanvasFillRule) => void) & ((path: Path2D, fillRule?: CanvasFillRule) => void);\n\n arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) => void;\n\n arcTo: ((x1: number, y1: number, x2: number, y2: number, radius: number) => void) &\n ((x1: number, y1: number, x2: number, y2: number, radiusX: number, radiusY: number, rotation: number) => void);\n\n bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void;\n\n closePath: () => void;\n\n ellipse: (\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) => void;\n\n lineTo: (x: number, y: number) => void;\n\n moveTo: (x: number, y: number) => void;\n\n quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void;\n\n rect: (x: number, y: number, w: number, h: number) => void;\n\n fill: (path?: Path2D, fillRule?: CanvasFillRule) => void;\n\n fillRect: (x: number, y: number, w: number, h: number) => void;\n\n clearRect: (x: number, y: number, w: number, h: number) => void;\n\n fillText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n getImageData: (sx: number, sy: number, sw: number, sh: number) => ImageData;\n\n getLineDash: () => number[];\n\n isPointInPath: (x: number, y: number) => boolean;\n isPointInStroke: (x: number, y: number) => boolean;\n\n measureText: (text: string, method?: 'native' | 'simple' | 'quick') => { width: number };\n\n putImageData: (\n imagedata: ImageData,\n dx: number,\n dy: number,\n dirtyX?: number,\n dirtyY?: number,\n dirtyWidth?: number,\n dirtyHeight?: number\n ) => void;\n\n setLineDash: (segments: number[]) => void;\n\n stroke: (path?: Path2D) => void;\n\n strokeRect: (x: number, y: number, w: number, h: number) => void;\n\n strokeText: (text: string, x: number, y: number, maxWidth?: number) => void;\n\n drawImage: ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void) &\n ((\n image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap | any,\n srcX: number,\n srcY: number,\n srcW: number,\n srcH: number,\n dstX: number,\n dstY: number,\n dstW: number,\n dstH: number\n ) => void);\n\n clearMatrix: () => void;\n onlyTranslate: () => boolean;\n}\n"]}
@@ -24,7 +24,7 @@ let DefaultCanvasPathRender = class extends base_render_1.BaseRender {
24
24
  }
25
25
  drawShape(path, context, x, y, drawContext, params, fillCb, strokeCb) {
26
26
  var _a, _b;
27
- const pathAttribute = (0, theme_1.getTheme)(path, null == params ? void 0 : params.theme).path, {fill: fill = pathAttribute.fill, stroke: stroke = pathAttribute.stroke, fillOpacity: fillOpacity = pathAttribute.fillOpacity, strokeOpacity: strokeOpacity = pathAttribute.strokeOpacity, opacity: opacity = pathAttribute.opacity, background: background, lineWidth: lineWidth = pathAttribute.lineWidth, visible: visible = pathAttribute.visible} = path.attribute, z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, fVisible = (0,
27
+ const pathAttribute = (0, theme_1.getTheme)(path, null == params ? void 0 : params.theme).path, {fill: fill = pathAttribute.fill, stroke: stroke = pathAttribute.stroke, fillOpacity: fillOpacity = pathAttribute.fillOpacity, strokeOpacity: strokeOpacity = pathAttribute.strokeOpacity, opacity: opacity = pathAttribute.opacity, background: background, lineWidth: lineWidth = pathAttribute.lineWidth, visible: visible = pathAttribute.visible, x: originX = pathAttribute.x, y: originY = pathAttribute.y} = path.attribute, z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, fVisible = (0,
28
28
  utils_1.fillVisible)(opacity, fillOpacity), sVisible = (0, utils_1.strokeVisible)(opacity, strokeOpacity), doFill = (0,
29
29
  utils_1.runFill)(fill), doStroke = (0, utils_1.runStroke)(stroke, lineWidth);
30
30
  if (path.valid && visible && (doFill || doStroke || background) && (fVisible || sVisible || fillCb || strokeCb || background)) {
@@ -36,8 +36,8 @@ let DefaultCanvasPathRender = class extends base_render_1.BaseRender {
36
36
  this._pathRenderContribitions.sort(((a, b) => b.order - a.order))), this._pathRenderContribitions.forEach((c => {
37
37
  c.time === base_contribution_render_1.BaseRenderContributionTime.beforeFillStroke && c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);
38
38
  })), context.setShadowStyle && context.setShadowStyle(path, path.attribute, pathAttribute),
39
- doStroke && (strokeCb ? strokeCb(context, path.attribute, pathAttribute) : sVisible && (context.setStrokeStyle(path, path.attribute, x, y, pathAttribute),
40
- context.stroke())), doFill && (fillCb ? fillCb(context, path.attribute, pathAttribute) : fVisible && (context.setCommonStyle(path, path.attribute, x, y, pathAttribute),
39
+ doStroke && (strokeCb ? strokeCb(context, path.attribute, pathAttribute) : sVisible && (context.setStrokeStyle(path, path.attribute, originX - x, originY - y, pathAttribute),
40
+ context.stroke())), doFill && (fillCb ? fillCb(context, path.attribute, pathAttribute) : fVisible && (context.setCommonStyle(path, path.attribute, originX - x, originY - y, pathAttribute),
41
41
  context.fill())), this._pathRenderContribitions.forEach((c => {
42
42
  c.time === base_contribution_render_1.BaseRenderContributionTime.afterFillStroke && c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);
43
43
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/render/contributions/render/path-render.ts"],"names":[],"mappings":"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","file":"path-render.js","sourcesContent":["import { inject, injectable, named } from 'inversify';\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { renderCommandList } from '../../../common/render-command-list';\nimport {\n IPath,\n ICustomPath2D,\n IContext2d,\n IThemeAttribute,\n IGraphicAttribute,\n IMarkAttribute\n} from '../../../interface';\nimport { IDrawContext, IRenderService } from '../../render-service';\nimport { getTheme } from '../../../graphic/theme';\nimport { PATH_NUMBER_TYPE } from '../../../graphic/constants';\nimport { IGraphicRender, IGraphicRenderDrawParams } from './graphic-render';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { IPathRenderContribution, PathRenderContribution } from './contributions/path-contribution-render';\nimport { BaseRenderContributionTime } from './contributions/base-contribution-render';\nimport { BaseRender } from './base-render';\nimport { mat4Allocate } from '../../../allocator/matrix-allocate';\n\n@injectable()\nexport class DefaultCanvasPathRender extends BaseRender<IPath> implements IGraphicRender {\n type: 'path';\n numberType: number = PATH_NUMBER_TYPE;\n declare z: number;\n\n protected _pathRenderContribitions: IPathRenderContribution[];\n\n constructor(\n @inject(ContributionProvider)\n @named(PathRenderContribution)\n protected readonly pathRenderContribitions: ContributionProvider<IPathRenderContribution>\n ) {\n super();\n }\n\n drawShape(\n path: IPath,\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 pathAttribute = graphicService.themeService.getCurrentTheme().pathAttribute;\n const pathAttribute = getTheme(path, params?.theme).path;\n const {\n fill = pathAttribute.fill,\n stroke = pathAttribute.stroke,\n fillOpacity = pathAttribute.fillOpacity,\n strokeOpacity = pathAttribute.strokeOpacity,\n opacity = pathAttribute.opacity,\n background,\n lineWidth = pathAttribute.lineWidth,\n visible = pathAttribute.visible\n } = path.attribute;\n\n const z = this.z ?? 0;\n\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(path.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke || background)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb || background)) {\n return;\n }\n\n context.beginPath();\n if (path.pathShape) {\n renderCommandList((path.pathShape as ICustomPath2D).commandList, context, x, y, 1, 1, z);\n } else {\n const path2D = path.attribute.path ?? pathAttribute.path;\n renderCommandList((path2D as ICustomPath2D).commandList, context, x, y, 1, 1, z);\n }\n\n if (!this._pathRenderContribitions) {\n this._pathRenderContribitions = this.pathRenderContribitions.getContributions() || [];\n this._pathRenderContribitions.sort((a, b) => b.order - a.order);\n }\n this._pathRenderContribitions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n // c.useStyle && context.setCommonStyle(rect, rect.attribute, x, y, rectAttribute);\n c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);\n }\n });\n\n // shadow\n context.setShadowStyle && context.setShadowStyle(path, path.attribute, pathAttribute);\n\n if (doStroke) {\n if (strokeCb) {\n strokeCb(context, path.attribute, pathAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(path, path.attribute, x, y, pathAttribute);\n context.stroke();\n }\n }\n if (doFill) {\n if (fillCb) {\n fillCb(context, path.attribute, pathAttribute);\n } else if (fVisible) {\n context.setCommonStyle(path, path.attribute, x, y, pathAttribute);\n context.fill();\n }\n }\n\n this._pathRenderContribitions.forEach(c => {\n if (c.time === BaseRenderContributionTime.afterFillStroke) {\n // c.useStyle && context.setCommonStyle(rect, rect.attribute, x, y, rectAttribute);\n c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);\n }\n });\n }\n\n draw(path: IPath, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n context.highPerformanceSave();\n\n // const pathAttribute = graphicService.themeService.getCurrentTheme().pathAttribute;\n const pathAttribute = getTheme(path, params?.theme).path;\n\n const data = this.transform(path, pathAttribute, context);\n const { x, y, z, lastModelMatrix } = data;\n\n this.z = z;\n if (drawPathProxy(path, context, x, y, drawContext, params)) {\n context.highPerformanceRestore();\n return;\n }\n\n this.drawShape(path, context, x, y, drawContext, params);\n this.z = 0;\n\n if (context.modelMatrix !== lastModelMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastModelMatrix;\n\n context.highPerformanceRestore();\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/render/contributions/render/path-render.ts"],"names":[],"mappings":"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","file":"path-render.js","sourcesContent":["import { inject, injectable, named } from 'inversify';\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { renderCommandList } from '../../../common/render-command-list';\nimport {\n IPath,\n ICustomPath2D,\n IContext2d,\n IThemeAttribute,\n IGraphicAttribute,\n IMarkAttribute\n} from '../../../interface';\nimport { IDrawContext, IRenderService } from '../../render-service';\nimport { getTheme } from '../../../graphic/theme';\nimport { PATH_NUMBER_TYPE } from '../../../graphic/constants';\nimport { IGraphicRender, IGraphicRenderDrawParams } from './graphic-render';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { IPathRenderContribution, PathRenderContribution } from './contributions/path-contribution-render';\nimport { BaseRenderContributionTime } from './contributions/base-contribution-render';\nimport { BaseRender } from './base-render';\nimport { mat4Allocate } from '../../../allocator/matrix-allocate';\n\n@injectable()\nexport class DefaultCanvasPathRender extends BaseRender<IPath> implements IGraphicRender {\n type: 'path';\n numberType: number = PATH_NUMBER_TYPE;\n declare z: number;\n\n protected _pathRenderContribitions: IPathRenderContribution[];\n\n constructor(\n @inject(ContributionProvider)\n @named(PathRenderContribution)\n protected readonly pathRenderContribitions: ContributionProvider<IPathRenderContribution>\n ) {\n super();\n }\n\n drawShape(\n path: IPath,\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 pathAttribute = graphicService.themeService.getCurrentTheme().pathAttribute;\n const pathAttribute = getTheme(path, params?.theme).path;\n const {\n fill = pathAttribute.fill,\n stroke = pathAttribute.stroke,\n fillOpacity = pathAttribute.fillOpacity,\n strokeOpacity = pathAttribute.strokeOpacity,\n opacity = pathAttribute.opacity,\n background,\n lineWidth = pathAttribute.lineWidth,\n visible = pathAttribute.visible,\n x: originX = pathAttribute.x,\n y: originY = pathAttribute.y\n } = path.attribute;\n\n const z = this.z ?? 0;\n\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(path.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke || background)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb || background)) {\n return;\n }\n\n context.beginPath();\n if (path.pathShape) {\n renderCommandList((path.pathShape as ICustomPath2D).commandList, context, x, y, 1, 1, z);\n } else {\n const path2D = path.attribute.path ?? pathAttribute.path;\n renderCommandList((path2D as ICustomPath2D).commandList, context, x, y, 1, 1, z);\n }\n\n if (!this._pathRenderContribitions) {\n this._pathRenderContribitions = this.pathRenderContribitions.getContributions() || [];\n this._pathRenderContribitions.sort((a, b) => b.order - a.order);\n }\n this._pathRenderContribitions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n // c.useStyle && context.setCommonStyle(rect, rect.attribute, x, y, rectAttribute);\n c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);\n }\n });\n\n // shadow\n context.setShadowStyle && context.setShadowStyle(path, path.attribute, pathAttribute);\n\n if (doStroke) {\n if (strokeCb) {\n strokeCb(context, path.attribute, pathAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(path, path.attribute, originX - x, originY - y, pathAttribute);\n context.stroke();\n }\n }\n if (doFill) {\n if (fillCb) {\n fillCb(context, path.attribute, pathAttribute);\n } else if (fVisible) {\n context.setCommonStyle(path, path.attribute, originX - x, originY - y, pathAttribute);\n context.fill();\n }\n }\n\n this._pathRenderContribitions.forEach(c => {\n if (c.time === BaseRenderContributionTime.afterFillStroke) {\n // c.useStyle && context.setCommonStyle(rect, rect.attribute, x, y, rectAttribute);\n c.drawShape(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, fillCb, strokeCb);\n }\n });\n }\n\n draw(path: IPath, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n context.highPerformanceSave();\n\n // const pathAttribute = graphicService.themeService.getCurrentTheme().pathAttribute;\n const pathAttribute = getTheme(path, params?.theme).path;\n\n const data = this.transform(path, pathAttribute, context);\n const { x, y, z, lastModelMatrix } = data;\n\n this.z = z;\n if (drawPathProxy(path, context, x, y, drawContext, params)) {\n context.highPerformanceRestore();\n return;\n }\n\n this.drawShape(path, context, x, y, drawContext, params);\n this.z = 0;\n\n if (context.modelMatrix !== lastModelMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastModelMatrix;\n\n context.highPerformanceRestore();\n }\n}\n"]}
@@ -24,7 +24,7 @@ let DefaultCanvasSymbolRender = class extends base_render_1.BaseRender {
24
24
  }
25
25
  drawShape(symbol, context, x, y, drawContext, params, fillCb, strokeCb) {
26
26
  var _a;
27
- const symbolAttribute = (0, theme_1.getTheme)(symbol, null == params ? void 0 : params.theme).symbol, {size: size = symbolAttribute.size, fill: fill = symbolAttribute.fill, background: background, fillOpacity: fillOpacity = symbolAttribute.fillOpacity, strokeOpacity: strokeOpacity = symbolAttribute.strokeOpacity, opacity: opacity = symbolAttribute.opacity, lineWidth: lineWidth = symbolAttribute.lineWidth, stroke: stroke = symbolAttribute.stroke, visible: visible = symbolAttribute.visible} = symbol.attribute, fVisible = (0,
27
+ const symbolAttribute = (0, theme_1.getTheme)(symbol, null == params ? void 0 : params.theme).symbol, {size: size = symbolAttribute.size, fill: fill = symbolAttribute.fill, background: background, fillOpacity: fillOpacity = symbolAttribute.fillOpacity, strokeOpacity: strokeOpacity = symbolAttribute.strokeOpacity, opacity: opacity = symbolAttribute.opacity, lineWidth: lineWidth = symbolAttribute.lineWidth, stroke: stroke = symbolAttribute.stroke, visible: visible = symbolAttribute.visible, x: originX = symbolAttribute.x, y: originY = symbolAttribute.y, scaleX: scaleX = symbolAttribute.scaleX, scaleY: scaleY = symbolAttribute.scaleY} = symbol.attribute, fVisible = (0,
28
28
  utils_1.fillVisible)(opacity, fillOpacity), sVisible = (0, utils_1.strokeVisible)(opacity, strokeOpacity), doFill = (0,
29
29
  utils_1.runFill)(fill), doStroke = (0, utils_1.runStroke)(stroke, lineWidth);
30
30
  if (!symbol.valid || !visible) return;
@@ -42,8 +42,8 @@ let DefaultCanvasSymbolRender = class extends base_render_1.BaseRender {
42
42
  this._symbolRenderContribitions.sort(((a, b) => b.order - a.order))), this._symbolRenderContribitions.forEach((c => {
43
43
  c.time === base_contribution_render_1.BaseRenderContributionTime.beforeFillStroke && c.drawShape(symbol, context, x, y, doFill, doStroke, fVisible, sVisible, symbolAttribute, fillCb, strokeCb);
44
44
  })), context.setShadowStyle && context.setShadowStyle(symbol, symbol.attribute, symbolAttribute),
45
- doFill && (fillCb ? fillCb(context, symbol.attribute, symbolAttribute) : fVisible && (context.setCommonStyle(symbol, symbol.attribute, x, y, symbolAttribute),
46
- context.fill())), doStroke && (strokeCb ? strokeCb(context, symbol.attribute, symbolAttribute) : sVisible && (context.setStrokeStyle(symbol, symbol.attribute, x, y, symbolAttribute),
45
+ doFill && (fillCb ? fillCb(context, symbol.attribute, symbolAttribute) : fVisible && (context.setCommonStyle(symbol, symbol.attribute, originX - x, originY - y, symbolAttribute),
46
+ context.fill())), doStroke && (strokeCb ? strokeCb(context, symbol.attribute, symbolAttribute) : sVisible && (context.setStrokeStyle(symbol, symbol.attribute, (originX - x) / scaleX, (originY - y) / scaleY, symbolAttribute),
47
47
  context.stroke())), this._symbolRenderContribitions.forEach((c => {
48
48
  c.time === base_contribution_render_1.BaseRenderContributionTime.afterFillStroke && c.drawShape(symbol, context, x, y, doFill, doStroke, fVisible, sVisible, symbolAttribute, fillCb, strokeCb);
49
49
  }));