@visactor/vrender-core 1.1.11-alpha.1 → 1.1.11

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 (42) hide show
  1. package/cjs/common/area-cache.d.ts +11 -0
  2. package/cjs/common/area-cache.js +115 -0
  3. package/cjs/common/area-cache.js.map +1 -0
  4. package/cjs/common/bezier-utils.js +1 -2
  5. package/cjs/common/bounds-context.js +2 -1
  6. package/cjs/common/path-svg.js +1 -2
  7. package/cjs/common/performance-raf.js +2 -1
  8. package/cjs/common/render-curve.d.ts +3 -0
  9. package/cjs/common/render-curve.js +16 -17
  10. package/cjs/common/render-curve.js.map +1 -1
  11. package/cjs/common/seg-context.js +1 -1
  12. package/cjs/graphic/area.js +3 -3
  13. package/cjs/graphic/area.js.map +1 -1
  14. package/cjs/graphic/line.js +4 -4
  15. package/cjs/graphic/line.js.map +1 -1
  16. package/cjs/render/contributions/render/area-render.js +18 -92
  17. package/cjs/render/contributions/render/area-render.js.map +1 -1
  18. package/cjs/render/contributions/render/incremental-area-render.d.ts +5 -1
  19. package/cjs/render/contributions/render/incremental-area-render.js +29 -7
  20. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  21. package/dist/index.es.js +213 -149
  22. package/es/common/area-cache.d.ts +11 -0
  23. package/es/common/area-cache.js +113 -0
  24. package/es/common/area-cache.js.map +1 -0
  25. package/es/common/bezier-utils.js +1 -2
  26. package/es/common/bounds-context.js +2 -1
  27. package/es/common/path-svg.js +1 -2
  28. package/es/common/performance-raf.js +2 -1
  29. package/es/common/render-curve.d.ts +3 -0
  30. package/es/common/render-curve.js +15 -16
  31. package/es/common/render-curve.js.map +1 -1
  32. package/es/common/seg-context.js +1 -1
  33. package/es/graphic/area.js +3 -3
  34. package/es/graphic/area.js.map +1 -1
  35. package/es/graphic/line.js +4 -4
  36. package/es/graphic/line.js.map +1 -1
  37. package/es/render/contributions/render/area-render.js +18 -92
  38. package/es/render/contributions/render/area-render.js.map +1 -1
  39. package/es/render/contributions/render/incremental-area-render.d.ts +5 -1
  40. package/es/render/contributions/render/incremental-area-render.js +28 -6
  41. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  42. package/package.json +4 -3
@@ -1,8 +1,12 @@
1
+ import type { IPointLike } from '@visactor/vutils';
1
2
  import type { IArea, IAreaGraphicAttribute, IAreaSegment, IGraphicAttribute, IContext2d, IMarkAttribute, IThemeAttribute, IGraphicRender, IGraphicRenderDrawParams, IDrawContext } from '../../../interface';
2
3
  import { DefaultCanvasAreaRender } from './area-render';
3
4
  export declare class DefaultIncrementalCanvasAreaRender extends DefaultCanvasAreaRender implements IGraphicRender {
4
5
  type: 'area';
5
6
  numberType: number;
6
7
  drawShape(area: IArea, context: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
7
- drawIncreaseSegment(area: IArea, context: IContext2d, lastSeg: IAreaSegment, seg: IAreaSegment, attribute: Partial<IAreaGraphicAttribute>, defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[], offsetX: number, offsetY: number): void;
8
+ drawIncreaseSegment(area: IArea, context: IContext2d, lastSeg: IAreaSegment, seg: IAreaSegment, attribute: Partial<IAreaGraphicAttribute>, defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[], offsetX: number, offsetY: number, continuity?: {
9
+ connectedType: 'none' | 'connect';
10
+ startPoint?: IPointLike;
11
+ }): void;
8
12
  }
@@ -8,6 +8,19 @@ import { DefaultCanvasAreaRender } from "./area-render";
8
8
 
9
9
  import { drawIncrementalAreaSegments } from "../../../common/render-curve";
10
10
 
11
+ import { getAreaPointRuns } from "../../../common/area-cache";
12
+
13
+ function previousPoint(segments, index, connectedType) {
14
+ for (let i = index - 1; i >= 0; i--) {
15
+ const points = segments[i].points;
16
+ for (let j = points.length - 1; j >= 0; j--) {
17
+ const point = points[j];
18
+ if (!1 !== point.defined) return point;
19
+ if ("connect" !== connectedType) return;
20
+ }
21
+ }
22
+ }
23
+
11
24
  export class DefaultIncrementalCanvasAreaRender extends DefaultCanvasAreaRender {
12
25
  constructor() {
13
26
  super(...arguments), this.numberType = AREA_NUMBER_TYPE;
@@ -16,19 +29,28 @@ export class DefaultIncrementalCanvasAreaRender extends DefaultCanvasAreaRender
16
29
  if (area.incremental && drawContext.multiGraphicOptions) {
17
30
  const {startAtIdx: startAtIdx, length: length} = drawContext.multiGraphicOptions, {segments: segments = []} = area.attribute;
18
31
  if (startAtIdx > segments.length) return;
19
- const areaAttribute = getTheme(area).area, {fill: fill = areaAttribute.fill, fillOpacity: fillOpacity = areaAttribute.fillOpacity, opacity: opacity = areaAttribute.opacity, visible: visible = areaAttribute.visible} = area.attribute, fVisible = fillVisible(opacity, fillOpacity, fill), doFill = runFill(fill);
32
+ const areaAttribute = getTheme(area).area, {fill: fill = areaAttribute.fill, fillOpacity: fillOpacity = areaAttribute.fillOpacity, opacity: opacity = areaAttribute.opacity, visible: visible = areaAttribute.visible, connectedType: connectedType = areaAttribute.connectedType} = area.attribute, fVisible = fillVisible(opacity, fillOpacity, fill), doFill = runFill(fill);
20
33
  if (!area.valid || !visible) return;
21
34
  if (!doFill) return;
22
35
  if (!fVisible && !fillCb) return;
23
- for (let i = startAtIdx; i < startAtIdx + length; i++) this.drawIncreaseSegment(area, context, segments[i - 1], segments[i], area.attribute.segments[i], [ areaAttribute, area.attribute ], x, y);
36
+ const endIndex = Math.min(startAtIdx + length, segments.length);
37
+ for (let i = startAtIdx; i < endIndex; i++) segments[i].points.some((p => !1 !== p.defined)) && this.drawIncreaseSegment(area, context, segments[i - 1], segments[i], area.attribute.segments[i], [ areaAttribute, area.attribute ], x, y, {
38
+ connectedType: connectedType,
39
+ startPoint: previousPoint(segments, i, connectedType)
40
+ });
24
41
  } else super.drawShape(area, context, x, y, drawContext, params, fillCb);
25
42
  }
26
- drawIncreaseSegment(area, context, lastSeg, seg, attribute, defaultAttribute, offsetX, offsetY) {
27
- seg && (context.beginPath(), drawIncrementalAreaSegments(context.camera ? context : context.nativeContext, lastSeg, seg, {
43
+ drawIncreaseSegment(area, context, lastSeg, seg, attribute, defaultAttribute, offsetX, offsetY, continuity) {
44
+ var _a, _b;
45
+ if (!seg) return;
46
+ const connectedType = null !== (_b = null !== (_a = null == continuity ? void 0 : continuity.connectedType) && void 0 !== _a ? _a : area.attribute.connectedType) && void 0 !== _b ? _b : getTheme(area).area.connectedType, startPoint = continuity ? continuity.startPoint : lastSeg && getAreaPointRuns(lastSeg.points, connectedType).tail;
47
+ context.beginPath(), drawIncrementalAreaSegments(context.camera ? context : context.nativeContext, lastSeg, seg, {
28
48
  offsetX: offsetX,
29
- offsetY: offsetY
49
+ offsetY: offsetY,
50
+ connectedType: connectedType,
51
+ startPoint: startPoint
30
52
  }), context.setShadowBlendStyle && context.setShadowBlendStyle(area, attribute, defaultAttribute),
31
- context.setCommonStyle(area, attribute, offsetX, offsetY, defaultAttribute), context.fill());
53
+ context.setCommonStyle(area, attribute, offsetX, offsetY, defaultAttribute), context.fill();
32
54
  }
33
55
  }
34
56
  //# sourceMappingURL=incremental-area-render.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/render/incremental-area-render.ts"],"names":[],"mappings":"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","file":"incremental-area-render.js","sourcesContent":["import type {\n IArea,\n IAreaGraphicAttribute,\n IAreaSegment,\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IDrawContext\n} from '../../../interface';\nimport { AREA_NUMBER_TYPE } from '../../../graphic/constants';\nimport { getTheme } from '../../../graphic/theme';\nimport { fillVisible, runFill } from './utils';\nimport { DefaultCanvasAreaRender } from './area-render';\nimport { drawIncrementalAreaSegments } from '../../../common/render-curve';\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\nexport class DefaultIncrementalCanvasAreaRender extends DefaultCanvasAreaRender implements IGraphicRender {\n declare type: 'area';\n numberType: number = AREA_NUMBER_TYPE;\n\n drawShape(\n area: IArea,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n if (area.incremental && drawContext.multiGraphicOptions) {\n const { startAtIdx, length } = drawContext.multiGraphicOptions;\n const { segments = [] } = area.attribute;\n if (startAtIdx > segments.length) {\n return;\n }\n const areaAttribute = getTheme(area).area;\n const {\n fill = areaAttribute.fill,\n fillOpacity = areaAttribute.fillOpacity,\n opacity = areaAttribute.opacity,\n visible = areaAttribute.visible\n } = area.attribute;\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const doFill = runFill(fill);\n\n if (!(area.valid && visible)) {\n return;\n }\n\n if (!doFill) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || fillCb)) {\n return;\n }\n\n // 不支持clipRange,不支持pick,仅支持最基础的线段绘制\n for (let i = startAtIdx; i < startAtIdx + length; i++) {\n this.drawIncreaseSegment(\n area,\n context,\n segments[i - 1],\n segments[i],\n area.attribute.segments[i],\n [areaAttribute, area.attribute],\n x,\n y\n );\n }\n } else {\n super.drawShape(area, context, x, y, drawContext, params, fillCb);\n }\n }\n\n drawIncreaseSegment(\n area: IArea,\n context: IContext2d,\n lastSeg: IAreaSegment,\n seg: IAreaSegment,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n offsetX: number,\n offsetY: number\n ) {\n if (!seg) {\n return;\n }\n\n context.beginPath();\n drawIncrementalAreaSegments(context.camera ? context : context.nativeContext, lastSeg, seg, {\n offsetX,\n offsetY\n });\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, attribute, defaultAttribute);\n context.setCommonStyle(area, attribute, offsetX, offsetY, defaultAttribute);\n context.fill();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/render/contributions/render/incremental-area-render.ts"],"names":[],"mappings":"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","file":"incremental-area-render.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type {\n IArea,\n IAreaGraphicAttribute,\n IAreaSegment,\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IDrawContext\n} from '../../../interface';\nimport { AREA_NUMBER_TYPE } from '../../../graphic/constants';\nimport { getTheme } from '../../../graphic/theme';\nimport { fillVisible, runFill } from './utils';\nimport { DefaultCanvasAreaRender } from './area-render';\nimport { drawIncrementalAreaSegments } from '../../../common/render-curve';\nimport { getAreaPointRuns } from '../../../common/area-cache';\n\nfunction previousPoint(segments: IAreaSegment[], index: number, connectedType: 'none' | 'connect') {\n for (let i = index - 1; i >= 0; i--) {\n const points = segments[i].points;\n for (let j = points.length - 1; j >= 0; j--) {\n const point = points[j];\n if (point.defined !== false) {\n return point;\n }\n if (connectedType !== 'connect') {\n return undefined;\n }\n }\n }\n return undefined;\n}\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\nexport class DefaultIncrementalCanvasAreaRender extends DefaultCanvasAreaRender implements IGraphicRender {\n declare type: 'area';\n numberType: number = AREA_NUMBER_TYPE;\n\n drawShape(\n area: IArea,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n if (area.incremental && drawContext.multiGraphicOptions) {\n const { startAtIdx, length } = drawContext.multiGraphicOptions;\n const { segments = [] } = area.attribute;\n if (startAtIdx > segments.length) {\n return;\n }\n const areaAttribute = getTheme(area).area;\n const {\n fill = areaAttribute.fill,\n fillOpacity = areaAttribute.fillOpacity,\n opacity = areaAttribute.opacity,\n visible = areaAttribute.visible,\n connectedType = areaAttribute.connectedType\n } = area.attribute;\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const doFill = runFill(fill);\n\n if (!(area.valid && visible)) {\n return;\n }\n\n if (!doFill) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || fillCb)) {\n return;\n }\n\n // 不支持clipRange,不支持pick,仅支持最基础的线段绘制\n const endIndex = Math.min(startAtIdx + length, segments.length);\n for (let i = startAtIdx; i < endIndex; i++) {\n // Empty batches draw nothing and must not repeatedly search the same prefix.\n if (!segments[i].points.some(p => p.defined !== false)) {\n continue;\n }\n this.drawIncreaseSegment(\n area,\n context,\n segments[i - 1],\n segments[i],\n area.attribute.segments[i],\n [areaAttribute, area.attribute],\n x,\n y,\n { connectedType, startPoint: previousPoint(segments, i, connectedType) }\n );\n }\n } else {\n super.drawShape(area, context, x, y, drawContext, params, fillCb);\n }\n }\n\n drawIncreaseSegment(\n area: IArea,\n context: IContext2d,\n lastSeg: IAreaSegment,\n seg: IAreaSegment,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n offsetX: number,\n offsetY: number,\n continuity?: { connectedType: 'none' | 'connect'; startPoint?: IPointLike }\n ) {\n if (!seg) {\n return;\n }\n\n const connectedType =\n continuity?.connectedType ?? area.attribute.connectedType ?? getTheme(area).area.connectedType;\n const startPoint = continuity\n ? continuity.startPoint\n : lastSeg && getAreaPointRuns(lastSeg.points, connectedType).tail;\n context.beginPath();\n drawIncrementalAreaSegments(context.camera ? context : context.nativeContext, lastSeg, seg, {\n offsetX,\n offsetY,\n connectedType,\n startPoint\n });\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, attribute, defaultAttribute);\n context.setCommonStyle(area, attribute, offsetX, offsetY, defaultAttribute);\n context.fill();\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-core",
3
- "version": "1.1.11-alpha.1",
3
+ "version": "1.1.11",
4
4
  "description": "",
5
5
  "sideEffects": [
6
6
  "./src/modules.ts",
@@ -136,8 +136,8 @@
136
136
  "typescript": "4.9.5",
137
137
  "cross-env": "^7.0.3",
138
138
  "@internal/bundler": "0.0.1",
139
- "@internal/ts-config": "0.0.1",
140
- "@internal/eslint-config": "0.0.1"
139
+ "@internal/eslint-config": "0.0.1",
140
+ "@internal/ts-config": "0.0.1"
141
141
  },
142
142
  "keywords": [
143
143
  "VisActor",
@@ -334,6 +334,7 @@
334
334
  "dev": "cross-env DEBUG='Bundler*' bundle --clean -f es -w",
335
335
  "start": "vite ./__tests__/browser",
336
336
  "test": "jest -c jest.config.js",
337
+ "test:artifacts": "jest -c jest.artifacts.config.js",
337
338
  "test:electron": "jest -c jest.electron.config.js --runInBand --passWithNoTests --testPathPattern='__tests__/(browser|electron)/'",
338
339
  "test-live": "npm run test-watch __tests__/unit/theme/line.test.ts",
339
340
  "test-watch": "cross-env DEBUG_MODE=1 jest --watch -c jest.config.js",