@visactor/vrender-core 0.17.20-alpha.1 → 0.17.20-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/canvas/empty-context.d.ts +4 -1
- package/cjs/canvas/empty-context.js +5 -1
- package/cjs/canvas/empty-context.js.map +1 -1
- package/cjs/common/custom-path2d.d.ts +1 -0
- package/cjs/common/custom-path2d.js +5 -1
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +4 -4
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/cjs/core/contributions/window/base-contribution.d.ts +8 -2
- package/cjs/core/contributions/window/base-contribution.js +15 -2
- package/cjs/core/contributions/window/base-contribution.js.map +1 -1
- package/cjs/core/graphic-utils.js +10 -6
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/layer.d.ts +0 -1
- package/cjs/core/layer.js +5 -23
- package/cjs/core/layer.js.map +1 -1
- package/cjs/core/stage.d.ts +5 -11
- package/cjs/core/stage.js +57 -66
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.d.ts +9 -2
- package/cjs/core/window.js +40 -4
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-manager.js +5 -3
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/event/event-system.d.ts +3 -2
- package/cjs/event/event-system.js +12 -8
- package/cjs/event/event-system.js.map +1 -1
- package/cjs/graphic/config.js +1 -0
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +1 -0
- package/cjs/graphic/graphic.js +4 -3
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.d.ts +1 -1
- package/cjs/graphic/group.js +2 -2
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/node-tree.d.ts +1 -1
- package/cjs/graphic/node-tree.js +6 -2
- package/cjs/graphic/node-tree.js.map +1 -1
- package/cjs/graphic/richtext.js +2 -2
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/theme.js +1 -1
- package/cjs/graphic/theme.js.map +1 -1
- package/cjs/interface/context.d.ts +1 -0
- package/cjs/interface/context.js.map +1 -1
- package/cjs/interface/event.d.ts +3 -9
- package/cjs/interface/event.js.map +1 -1
- package/cjs/interface/graphic.d.ts +2 -0
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/layer.d.ts +5 -10
- package/cjs/interface/layer.js.map +1 -1
- package/cjs/interface/node-tree.d.ts +1 -1
- package/cjs/interface/node-tree.js.map +1 -1
- package/cjs/interface/picker.d.ts +0 -1
- package/cjs/interface/picker.js.map +1 -1
- package/cjs/interface/render.d.ts +2 -5
- package/cjs/interface/render.js.map +1 -1
- package/cjs/interface/stage.d.ts +2 -1
- package/cjs/interface/stage.js.map +1 -1
- package/cjs/interface/window.d.ts +14 -3
- package/cjs/interface/window.js.map +1 -1
- package/cjs/picker/picker-service.js +6 -14
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +24 -20
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +2 -4
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +4 -2
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.d.ts +1 -1
- package/cjs/render/contributions/render/draw-contribution.js +25 -26
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +4 -2
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.js +11 -19
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/index.d.ts +1 -0
- package/cjs/render/contributions/render/index.js +2 -1
- package/cjs/render/contributions/render/index.js.map +1 -1
- package/cjs/render/contributions/render/module.js.map +1 -1
- package/cjs/resource-loader/loader.d.ts +5 -0
- package/cjs/resource-loader/loader.js +56 -15
- package/cjs/resource-loader/loader.js.map +1 -1
- package/es/canvas/empty-context.d.ts +4 -1
- package/es/canvas/empty-context.js +4 -1
- package/es/canvas/empty-context.js.map +1 -1
- package/es/common/custom-path2d.d.ts +1 -0
- package/es/common/custom-path2d.js +5 -1
- package/es/common/custom-path2d.js.map +1 -1
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js +4 -4
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/es/core/contributions/window/base-contribution.d.ts +8 -2
- package/es/core/contributions/window/base-contribution.js +15 -1
- package/es/core/contributions/window/base-contribution.js.map +1 -1
- package/es/core/graphic-utils.js +10 -6
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/layer.d.ts +0 -1
- package/es/core/layer.js +5 -23
- package/es/core/layer.js.map +1 -1
- package/es/core/stage.d.ts +5 -11
- package/es/core/stage.js +58 -67
- package/es/core/stage.js.map +1 -1
- package/es/core/window.d.ts +9 -2
- package/es/core/window.js +40 -4
- package/es/core/window.js.map +1 -1
- package/es/event/event-manager.js +5 -3
- package/es/event/event-manager.js.map +1 -1
- package/es/event/event-system.d.ts +3 -2
- package/es/event/event-system.js +13 -9
- package/es/event/event-system.js.map +1 -1
- package/es/graphic/config.js +1 -0
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/graphic.d.ts +1 -0
- package/es/graphic/graphic.js +5 -4
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.d.ts +1 -1
- package/es/graphic/group.js +2 -2
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/node-tree.d.ts +1 -1
- package/es/graphic/node-tree.js +6 -2
- package/es/graphic/node-tree.js.map +1 -1
- package/es/graphic/richtext.js +2 -2
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/theme.js +1 -1
- package/es/graphic/theme.js.map +1 -1
- package/es/interface/context.d.ts +1 -0
- package/es/interface/context.js.map +1 -1
- package/es/interface/event.d.ts +3 -9
- package/es/interface/event.js.map +1 -1
- package/es/interface/graphic.d.ts +2 -0
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/layer.d.ts +5 -10
- package/es/interface/layer.js.map +1 -1
- package/es/interface/node-tree.d.ts +1 -1
- package/es/interface/node-tree.js.map +1 -1
- package/es/interface/picker.d.ts +0 -1
- package/es/interface/picker.js.map +1 -1
- package/es/interface/render.d.ts +2 -5
- package/es/interface/render.js.map +1 -1
- package/es/interface/stage.d.ts +2 -1
- package/es/interface/stage.js.map +1 -1
- package/es/interface/window.d.ts +14 -3
- package/es/interface/window.js.map +1 -1
- package/es/picker/picker-service.js +7 -15
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +24 -20
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +2 -4
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/es/render/contributions/render/area-render.js +4 -2
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.d.ts +1 -1
- package/es/render/contributions/render/draw-contribution.js +25 -26
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/image-render.js +6 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.js +11 -19
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/index.d.ts +1 -0
- package/es/render/contributions/render/index.js +2 -0
- package/es/render/contributions/render/index.js.map +1 -1
- package/es/render/contributions/render/module.js.map +1 -1
- package/es/resource-loader/loader.d.ts +5 -0
- package/es/resource-loader/loader.js +56 -14
- package/es/resource-loader/loader.js.map +1 -1
- package/package.json +3 -3
|
@@ -38,12 +38,10 @@ class IncrementalAutoRenderPlugin {
|
|
|
38
38
|
if (!layer || !group.layer.subLayers) return;
|
|
39
39
|
const subLayer = group.layer.subLayers.get(group._uid);
|
|
40
40
|
subLayer && subLayer.drawContribution && subLayer.drawContribution.draw(stage.renderService, Object.assign({
|
|
41
|
-
x: stage.x,
|
|
42
|
-
y: stage.y,
|
|
43
|
-
width: layer.viewWidth,
|
|
44
|
-
height: layer.viewHeight,
|
|
45
41
|
stage: stage,
|
|
46
42
|
layer: layer,
|
|
43
|
+
viewBox: stage.window.getViewBox(),
|
|
44
|
+
transMatrix: stage.window.getViewBoxTransform(),
|
|
47
45
|
clear: "transparent",
|
|
48
46
|
renderService: stage.renderService,
|
|
49
47
|
updateBounds: !1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugins/builtin-plugin/incremental-auto-render-plugin.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,sDAAmD;AAEnD,MAAa,2BAA2B;IAAxC;QACE,SAAI,GAAkC,6BAA6B,CAAC;QACpE,gBAAW,GAAiB,YAAY,CAAC;QAE/B,4BAAuB,GAAgB,IAAI,GAAG,EAAE,CAAC;QACjD,wBAAmB,GAAY,KAAK,CAAC;QAC/C,mBAAc,GAA0B,EAAE,CAAC;QAC3C,SAAI,GAAW,qBAAS,CAAC,kBAAkB,EAAE,CAAC;QAC9C,QAAG,GAAW,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/plugins/builtin-plugin/incremental-auto-render-plugin.ts"],"names":[],"mappings":"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","file":"incremental-auto-render-plugin.js","sourcesContent":["import type { IGroup, IPlugin, IPluginService, IDrawContext } from '../../interface';\nimport { application } from '../../application';\nimport { Generator } from '../../common/generator';\n\nexport class IncrementalAutoRenderPlugin implements IPlugin {\n name: 'IncrementalAutoRenderPlugin' = 'IncrementalAutoRenderPlugin';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n protected nextFrameRenderGroupSet: Set<IGroup> = new Set();\n protected willNextFrameRender: boolean = false;\n nextUserParams: Partial<IDrawContext> = {};\n _uid: number = Generator.GenAutoIncrementId();\n key: string = this.name + this._uid;\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n application.graphicService.hooks.onAddIncremental.tap(this.key, (graphic, group, stage) => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n if (graphic.stage === context.stage && graphic.stage != null) {\n this.nextUserParams.startAtId = group._uid;\n this.renderNextFrame(group);\n }\n });\n application.graphicService.hooks.onClearIncremental.tap(this.key, (group, stage) => {\n if (group.stage === context.stage && group.stage != null) {\n this.nextUserParams.startAtId = group._uid;\n this.nextUserParams.restartIncremental = true;\n this.renderNextFrame(group);\n }\n });\n }\n deactivate(context: IPluginService): void {\n application.graphicService.hooks.onAddIncremental.taps =\n application.graphicService.hooks.onAddIncremental.taps.filter(item => {\n return item.name !== this.key;\n });\n application.graphicService.hooks.onClearIncremental.taps =\n application.graphicService.hooks.onClearIncremental.taps.filter(item => {\n return item.name !== this.key;\n });\n }\n\n renderNextFrame(group: IGroup): void {\n this.nextFrameRenderGroupSet.add(group);\n if (!this.willNextFrameRender) {\n this.willNextFrameRender = true;\n application.global.getRequestAnimationFrame()(() => {\n this._doRenderInThisFrame();\n this.willNextFrameRender = false;\n });\n }\n }\n\n _doRenderInThisFrame() {\n const stage = this.pluginService.stage;\n if (this.nextFrameRenderGroupSet.size) {\n this.nextFrameRenderGroupSet.forEach(group => {\n const layer = group.layer;\n if (!layer || !group.layer.subLayers) {\n return;\n }\n const subLayer = group.layer.subLayers.get(group._uid);\n if (!subLayer || !subLayer.drawContribution) {\n return;\n }\n subLayer.drawContribution.draw(stage.renderService, {\n stage,\n layer,\n viewBox: stage.window.getViewBox(),\n transMatrix: stage.window.getViewBoxTransform(),\n // TODO: 多图层时不应该再用默认background\n clear: 'transparent',\n renderService: stage.renderService,\n updateBounds: false,\n startAtId: group._uid,\n context: subLayer.layer.getNativeHandler().getContext(),\n ...this.nextUserParams\n });\n });\n this.nextUserParams = {};\n this.nextFrameRenderGroupSet.clear();\n }\n }\n}\n"]}
|
|
@@ -55,8 +55,10 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
|
|
|
55
55
|
}
|
|
56
56
|
drawLinearAreaHighPerformance(area, context, fill, stroke, fillOpacity, strokeOpacity, offsetX, offsetY, areaAttribute, drawContext, params, fillCb, strokeCb) {
|
|
57
57
|
var _a, _b, _c, _d, _e;
|
|
58
|
+
const {points: points} = area.attribute;
|
|
59
|
+
if (points.length < 2) return;
|
|
58
60
|
context.beginPath();
|
|
59
|
-
const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0,
|
|
61
|
+
const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, startP = points[0];
|
|
60
62
|
context.moveTo(startP.x + offsetX, startP.y + offsetY, z);
|
|
61
63
|
for (let i = 1; i < points.length; i++) {
|
|
62
64
|
const p = points[i];
|
|
@@ -189,6 +191,7 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
|
|
|
189
191
|
}
|
|
190
192
|
_drawSegmentItem(context, cache, fill, fillOpacity, stroke, strokeOpacity, attribute, defaultAttribute, clipRange, offsetX, offsetY, offsetZ, area, drawContext, connect, fillCb, strokeCb) {
|
|
191
193
|
var _a, _b, _c, _d;
|
|
194
|
+
if (!(cache && cache.top && cache.bottom && cache.top.curves && cache.top.curves.length && cache.bottom.curves && cache.bottom.curves.length)) return;
|
|
192
195
|
let {connectedType: connectedType, connectedX: connectedX, connectedY: connectedY, connectedStyle: connectedStyle} = attribute;
|
|
193
196
|
const da = [];
|
|
194
197
|
if (connect && ((0, vutils_1.isArray)(defaultAttribute) ? (connectedType = null !== (_a = null != connectedType ? connectedType : defaultAttribute[0].connectedType) && void 0 !== _a ? _a : defaultAttribute[1].connectedType,
|
|
@@ -200,7 +203,6 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
|
|
|
200
203
|
"connect" !== connectedType && "zero" !== connectedType && (connectedType = "none"),
|
|
201
204
|
(0, vutils_1.isArray)(defaultAttribute) ? defaultAttribute.forEach((i => da.push(i))) : da.push(defaultAttribute),
|
|
202
205
|
da.push(attribute)), connect && "none" === connectedType) return !1;
|
|
203
|
-
if (!cache) return;
|
|
204
206
|
context.beginPath();
|
|
205
207
|
const {points: points, segments: segments} = area.attribute;
|
|
206
208
|
let endP, startP, direction = enums_1.Direction.ROW;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/area-render.ts"],"names":[],"mappings":"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","file":"area-render.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs, isArray, min } from '@visactor/vutils';\nimport { inject, injectable, named } from '../../../common/inversify-lite';\nimport type {\n IArea,\n IAreaCacheItem,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n IContext2d,\n ICurveType,\n IMarkAttribute,\n IThemeAttribute,\n ISegPath2D,\n IDirection,\n IAreaRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IStrokeType\n} from '../../../interface';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport {\n genLinearSegments,\n genBasisSegments,\n genMonotoneXSegments,\n genMonotoneYSegments,\n genStepSegments,\n genLinearClosedSegments\n} from '../../../common/segment';\n\nimport { getTheme } from '../../../graphic/theme';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { AreaRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime, Direction } from '../../../common/enums';\nimport { drawAreaSegments } from '../../../common/render-area';\nimport { AREA_NUMBER_TYPE } from '../../../graphic/constants';\nimport { drawSegments } from '../../../common/render-curve';\nimport { BaseRender } from './base-render';\nimport {\n defaultAreaBackgroundRenderContribution,\n defaultAreaTextureRenderContribution\n} from './contributions/area-contribution-render';\nimport { segments } from '../../../common/shape/arc';\n\nfunction calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: { direction?: IDirection; startPoint?: IPointLike }\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n\n@injectable()\nexport class DefaultCanvasAreaRender extends BaseRender<IArea> implements IGraphicRender {\n type: 'area';\n numberType: number = AREA_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(AreaRenderContribution)\n protected readonly areaRenderContribitions: IContributionProvider<IAreaRenderContribution>\n ) {\n super();\n this.builtinContributions = [defaultAreaTextureRenderContribution, defaultAreaBackgroundRenderContribution];\n this.init(areaRenderContribitions);\n }\n\n drawLinearAreaHighPerformance(\n area: IArea,\n context: IContext2d,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n offsetX: number,\n offsetY: number,\n areaAttribute: Required<IAreaGraphicAttribute>,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n context.beginPath();\n\n const z = this.z ?? 0;\n const { points } = area.attribute;\n const startP = points[0];\n\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n context.lineTo((p.x1 ?? p.x) + offsetX, (p.y1 ?? p.y) + offsetY, z);\n }\n context.closePath();\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, area.attribute, areaAttribute);\n\n this.beforeRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n areaAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute: area.attribute }\n );\n\n const { x: originX = 0, x: originY = 0 } = area.attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, area.attribute, areaAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute);\n context.fill();\n }\n }\n\n this.afterRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n areaAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute: area.attribute }\n );\n\n if (stroke) {\n const { stroke = areaAttribute && areaAttribute.stroke } = area.attribute;\n if (isArray(stroke) && (stroke[0] || stroke[2]) && stroke[1] === false) {\n context.beginPath();\n if (stroke[0]) {\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n } else if (stroke[2]) {\n const endP = points[points.length - 1];\n context.moveTo(endP.x + offsetX, endP.y + offsetY, z);\n for (let i = points.length - 2; i >= 0; i--) {\n const p = points[i];\n context.lineTo((p.x1 ?? p.x) + offsetX, (p.y1 ?? p.y) + offsetY, z);\n }\n }\n }\n if (strokeCb) {\n strokeCb(context, area.attribute, areaAttribute);\n } else {\n context.setStrokeStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute);\n context.stroke();\n }\n }\n }\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 strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const areaAttribute = getTheme(area, params?.theme).area;\n const {\n fill = areaAttribute.fill,\n stroke = areaAttribute.stroke,\n fillOpacity = areaAttribute.fillOpacity,\n z = areaAttribute.z,\n strokeOpacity = areaAttribute.strokeOpacity\n } = area.attribute;\n\n const data = this.valid(area, areaAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { doFill, doStroke } = data;\n\n const { clipRange = areaAttribute.clipRange, closePath, points, segments } = area.attribute;\n let { curveType = areaAttribute.curveType } = area.attribute;\n if (closePath && curveType === 'linear') {\n curveType = 'linearClosed';\n }\n\n if (clipRange === 1 && !segments && !points.some(p => p.defined === false) && curveType === 'linear') {\n return this.drawLinearAreaHighPerformance(\n area,\n context,\n !!fill,\n doStroke,\n fillOpacity,\n strokeOpacity,\n x,\n y,\n areaAttribute,\n drawContext,\n params,\n fillCb,\n strokeCb\n );\n }\n\n // 更新cache\n if (area.shouldUpdateShape()) {\n if (segments && segments.length) {\n let startPoint: IPointLike;\n let lastTopSeg: { endX: number; endY: number };\n const topCaches = segments\n .map((seg, index) => {\n if (seg.points.length <= 1) {\n // 第一个点的话,直接设置lastTopSeg\n if (index === 0) {\n seg.points[0] && (lastTopSeg = { endX: seg.points[0].x, endY: seg.points[0].y });\n return null;\n }\n }\n // 添加上一个segment结束的点作为这个segment的起始点\n if (index === 1) {\n startPoint = { x: lastTopSeg.endX, y: lastTopSeg.endY };\n } else if (index > 1) {\n startPoint.x = lastTopSeg.endX;\n startPoint.y = lastTopSeg.endY;\n }\n const data = calcLineCache(seg.points, curveType, {\n startPoint\n });\n lastTopSeg = data;\n return data;\n })\n .filter(item => !!item);\n let lastBottomSeg: ISegPath2D;\n const bottomCaches = [];\n for (let i = segments.length - 1; i >= 0; i--) {\n const points = segments[i].points;\n const bottomPoints: IPointLike[] = [];\n for (let i = points.length - 1; i >= 0; i--) {\n bottomPoints.push({\n x: points[i].x1 ?? points[i].x,\n y: points[i].y1 ?? points[i].y\n });\n }\n // 处理一下bottom的segments,bottom的segments需要手动添加endPoints\n if (i !== 0) {\n const lastSegmentPoints = segments[i - 1].points;\n const endPoint = lastSegmentPoints[lastSegmentPoints.length - 1];\n endPoint &&\n bottomPoints.push({\n x: endPoint.x1 ?? endPoint.x,\n y: endPoint.y1 ?? endPoint.y\n });\n }\n if (bottomPoints.length > 1) {\n lastBottomSeg = calcLineCache(\n bottomPoints,\n curveType === 'stepBefore' ? 'stepAfter' : curveType === 'stepAfter' ? 'stepBefore' : curveType\n );\n bottomCaches.unshift(lastBottomSeg);\n }\n }\n area.cacheArea = bottomCaches.map((item, index) => ({\n top: topCaches[index],\n bottom: item\n }));\n } else if (points && points.length) {\n // 转换points\n const topPoints = points;\n const bottomPoints: IPointLike[] = [];\n for (let i = points.length - 1; i >= 0; i--) {\n bottomPoints.push({\n x: points[i].x1 ?? points[i].x,\n y: points[i].y1 ?? points[i].y\n });\n }\n const topCache = calcLineCache(topPoints, curveType);\n const bottomCache = calcLineCache(\n bottomPoints,\n curveType === 'stepBefore' ? 'stepAfter' : curveType === 'stepAfter' ? 'stepBefore' : curveType\n );\n\n area.cacheArea = { top: topCache, bottom: bottomCache };\n } else {\n area.cacheArea = null;\n area.clearUpdateShapeTag();\n return;\n }\n area.clearUpdateShapeTag();\n }\n\n if (Array.isArray(area.cacheArea)) {\n const segments = area.attribute.segments.filter(item => item.points.length);\n // 如果第一个seg只有一个点,那么shift出去\n if (segments[0].points.length === 1) {\n segments.shift();\n }\n if (clipRange === 1) {\n let skip = false;\n // 性能优化,不需要clip的线段不需要计算长度\n area.cacheArea.forEach((cache, index) => {\n if (skip) {\n return;\n }\n skip = this.drawSegmentItem(\n context,\n cache,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n segments[index],\n [areaAttribute, area.attribute],\n clipRange,\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n } else {\n // 如果是segments的话,每个clipRange需要重新计算\n // 整个线段的总长度\n const totalLength = area.cacheArea.reduce((l, c) => l + c.top.getLength(), 0);\n // 总需要绘制的长度\n const totalDrawLength = clipRange * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let skip = false;\n area.cacheArea.forEach((cache, index) => {\n if (skip) {\n return;\n }\n const curSegLength = cache.top.getLength();\n const _cr = (totalDrawLength - drawedLengthUntilLast) / curSegLength;\n drawedLengthUntilLast += curSegLength;\n if (_cr > 0) {\n skip = this.drawSegmentItem(\n context,\n cache,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n segments[index],\n [areaAttribute, area.attribute],\n min(_cr, 1),\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n });\n }\n } else {\n this.drawSegmentItem(\n context,\n area.cacheArea as IAreaCacheItem,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n area.attribute,\n areaAttribute,\n clipRange,\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n }\n\n draw(area: IArea, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const areaAttribute = getTheme(area, params?.theme).area;\n this._draw(area, areaAttribute, false, drawContext, params);\n }\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: IAreaCacheItem,\n fill: boolean,\n fillOpacity: number,\n stroke: boolean,\n strokeOpacity: number,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n clipRange: number,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n area: IArea,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n let ret = false;\n ret =\n ret ||\n this._drawSegmentItem(\n context,\n cache,\n fill,\n fillOpacity,\n stroke,\n strokeOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n offsetX,\n offsetY,\n offsetZ,\n area,\n drawContext,\n false,\n fillCb,\n strokeCb\n );\n ret =\n ret ||\n this._drawSegmentItem(\n context,\n cache,\n fill,\n fillOpacity,\n stroke,\n strokeOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n offsetX,\n offsetY,\n offsetZ,\n area,\n drawContext,\n true,\n fillCb,\n strokeCb\n );\n return ret;\n }\n\n protected _drawSegmentItem(\n context: IContext2d,\n cache: IAreaCacheItem,\n fill: boolean,\n fillOpacity: number,\n stroke: boolean,\n strokeOpacity: number,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n clipRange: number,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n area: IArea,\n drawContext: IDrawContext,\n connect: boolean,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ) {\n // 绘制connect区域\n let { connectedType, connectedX, connectedY, connectedStyle } = attribute;\n const da = [];\n if (connect) {\n if (isArray(defaultAttribute)) {\n connectedType = connectedType ?? defaultAttribute[0].connectedType ?? defaultAttribute[1].connectedType;\n connectedX = connectedX ?? defaultAttribute[0].connectedX ?? defaultAttribute[1].connectedX;\n connectedY = connectedY ?? defaultAttribute[0].connectedY ?? defaultAttribute[1].connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute[0].connectedStyle ?? defaultAttribute[1].connectedStyle;\n } else {\n connectedType = connectedType ?? defaultAttribute.connectedType;\n connectedX = connectedX ?? defaultAttribute.connectedX;\n connectedY = connectedY ?? defaultAttribute.connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute.connectedStyle;\n }\n\n // 如果有非法值就是none\n if (connectedType !== 'connect' && connectedType !== 'zero') {\n connectedType = 'none';\n }\n\n if (isArray(defaultAttribute)) {\n defaultAttribute.forEach(i => da.push(i));\n } else {\n da.push(defaultAttribute);\n }\n da.push(attribute);\n }\n\n if (connect && connectedType === 'none') {\n return false;\n }\n\n if (!cache) {\n return;\n }\n context.beginPath();\n\n const ret: boolean = false;\n const { points, segments } = area.attribute;\n let direction = Direction.ROW;\n let endP: IPointLike;\n let startP: IPointLike;\n if (segments) {\n const endSeg = segments[segments.length - 1];\n const startSeg = segments[0];\n startP = startSeg.points[0];\n endP = endSeg.points[endSeg.points.length - 1];\n } else {\n startP = points[0];\n endP = points[points.length - 1];\n }\n const xTotalLength = abs(endP.x - startP.x);\n const yTotalLength = abs(endP.y - startP.y);\n direction = xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN;\n drawAreaSegments(context.camera ? context : context.nativeContext, cache, clipRange, {\n offsetX,\n offsetY,\n offsetZ,\n direction,\n drawConnect: connect,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n });\n\n this.beforeRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n defaultAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute }\n );\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, attribute, defaultAttribute);\n\n const { x: originX = 0, x: originY = 0 } = attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(\n area,\n connect ? connectedStyle : attribute,\n originX - offsetX,\n originY - offsetY,\n connect ? da : defaultAttribute\n );\n context.fill();\n }\n }\n\n this.afterRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n defaultAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute }\n );\n\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else {\n const { stroke = defaultAttribute && defaultAttribute[1] && defaultAttribute[1].stroke } = attribute;\n if (isArray(stroke) && (stroke[0] || stroke[2]) && stroke[1] === false) {\n context.beginPath();\n drawSegments(\n context.camera ? context : context.nativeContext,\n stroke[0] ? cache.top : cache.bottom,\n clipRange,\n direction === Direction.ROW ? 'x' : 'y',\n {\n offsetX,\n offsetY,\n offsetZ,\n drawConnect: connect,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n }\n );\n }\n context.setStrokeStyle(\n area,\n connect ? connectedStyle : attribute,\n originX - offsetX,\n originY - offsetY,\n connect ? da : defaultAttribute\n );\n context.stroke();\n }\n }\n\n return ret;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/area-render.ts"],"names":[],"mappings":"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","file":"area-render.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs, isArray, min } from '@visactor/vutils';\nimport { inject, injectable, named } from '../../../common/inversify-lite';\nimport type {\n IArea,\n IAreaCacheItem,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n IContext2d,\n ICurveType,\n IMarkAttribute,\n IThemeAttribute,\n ISegPath2D,\n IDirection,\n IAreaRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IStrokeType\n} from '../../../interface';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport {\n genLinearSegments,\n genBasisSegments,\n genMonotoneXSegments,\n genMonotoneYSegments,\n genStepSegments,\n genLinearClosedSegments\n} from '../../../common/segment';\n\nimport { getTheme } from '../../../graphic/theme';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { AreaRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime, Direction } from '../../../common/enums';\nimport { drawAreaSegments } from '../../../common/render-area';\nimport { AREA_NUMBER_TYPE } from '../../../graphic/constants';\nimport { drawSegments } from '../../../common/render-curve';\nimport { BaseRender } from './base-render';\nimport {\n defaultAreaBackgroundRenderContribution,\n defaultAreaTextureRenderContribution\n} from './contributions/area-contribution-render';\nimport { segments } from '../../../common/shape/arc';\n\nfunction calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: { direction?: IDirection; startPoint?: IPointLike }\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n\n@injectable()\nexport class DefaultCanvasAreaRender extends BaseRender<IArea> implements IGraphicRender {\n type: 'area';\n numberType: number = AREA_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(AreaRenderContribution)\n protected readonly areaRenderContribitions: IContributionProvider<IAreaRenderContribution>\n ) {\n super();\n this.builtinContributions = [defaultAreaTextureRenderContribution, defaultAreaBackgroundRenderContribution];\n this.init(areaRenderContribitions);\n }\n\n drawLinearAreaHighPerformance(\n area: IArea,\n context: IContext2d,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n offsetX: number,\n offsetY: number,\n areaAttribute: Required<IAreaGraphicAttribute>,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const { points } = area.attribute;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n\n const z = this.z ?? 0;\n const startP = points[0];\n\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n context.lineTo((p.x1 ?? p.x) + offsetX, (p.y1 ?? p.y) + offsetY, z);\n }\n context.closePath();\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, area.attribute, areaAttribute);\n\n this.beforeRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n areaAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute: area.attribute }\n );\n\n const { x: originX = 0, x: originY = 0 } = area.attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, area.attribute, areaAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute);\n context.fill();\n }\n }\n\n this.afterRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n areaAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute: area.attribute }\n );\n\n if (stroke) {\n const { stroke = areaAttribute && areaAttribute.stroke } = area.attribute;\n if (isArray(stroke) && (stroke[0] || stroke[2]) && stroke[1] === false) {\n context.beginPath();\n if (stroke[0]) {\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n } else if (stroke[2]) {\n const endP = points[points.length - 1];\n context.moveTo(endP.x + offsetX, endP.y + offsetY, z);\n for (let i = points.length - 2; i >= 0; i--) {\n const p = points[i];\n context.lineTo((p.x1 ?? p.x) + offsetX, (p.y1 ?? p.y) + offsetY, z);\n }\n }\n }\n if (strokeCb) {\n strokeCb(context, area.attribute, areaAttribute);\n } else {\n context.setStrokeStyle(area, area.attribute, originX - offsetX, originY - offsetY, areaAttribute);\n context.stroke();\n }\n }\n }\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 strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const areaAttribute = getTheme(area, params?.theme).area;\n const {\n fill = areaAttribute.fill,\n stroke = areaAttribute.stroke,\n fillOpacity = areaAttribute.fillOpacity,\n z = areaAttribute.z,\n strokeOpacity = areaAttribute.strokeOpacity\n } = area.attribute;\n\n const data = this.valid(area, areaAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { doFill, doStroke } = data;\n\n const { clipRange = areaAttribute.clipRange, closePath, points, segments } = area.attribute;\n let { curveType = areaAttribute.curveType } = area.attribute;\n if (closePath && curveType === 'linear') {\n curveType = 'linearClosed';\n }\n\n if (clipRange === 1 && !segments && !points.some(p => p.defined === false) && curveType === 'linear') {\n return this.drawLinearAreaHighPerformance(\n area,\n context,\n !!fill,\n doStroke,\n fillOpacity,\n strokeOpacity,\n x,\n y,\n areaAttribute,\n drawContext,\n params,\n fillCb,\n strokeCb\n );\n }\n\n // 更新cache\n if (area.shouldUpdateShape()) {\n if (segments && segments.length) {\n let startPoint: IPointLike;\n let lastTopSeg: { endX: number; endY: number };\n const topCaches = segments\n .map((seg, index) => {\n if (seg.points.length <= 1) {\n // 第一个点的话,直接设置lastTopSeg\n if (index === 0) {\n seg.points[0] && (lastTopSeg = { endX: seg.points[0].x, endY: seg.points[0].y });\n return null;\n }\n }\n // 添加上一个segment结束的点作为这个segment的起始点\n if (index === 1) {\n startPoint = { x: lastTopSeg.endX, y: lastTopSeg.endY };\n } else if (index > 1) {\n startPoint.x = lastTopSeg.endX;\n startPoint.y = lastTopSeg.endY;\n }\n const data = calcLineCache(seg.points, curveType, {\n startPoint\n });\n lastTopSeg = data;\n return data;\n })\n .filter(item => !!item);\n let lastBottomSeg: ISegPath2D;\n const bottomCaches = [];\n for (let i = segments.length - 1; i >= 0; i--) {\n const points = segments[i].points;\n const bottomPoints: IPointLike[] = [];\n for (let i = points.length - 1; i >= 0; i--) {\n bottomPoints.push({\n x: points[i].x1 ?? points[i].x,\n y: points[i].y1 ?? points[i].y\n });\n }\n // 处理一下bottom的segments,bottom的segments需要手动添加endPoints\n if (i !== 0) {\n const lastSegmentPoints = segments[i - 1].points;\n const endPoint = lastSegmentPoints[lastSegmentPoints.length - 1];\n endPoint &&\n bottomPoints.push({\n x: endPoint.x1 ?? endPoint.x,\n y: endPoint.y1 ?? endPoint.y\n });\n }\n if (bottomPoints.length > 1) {\n lastBottomSeg = calcLineCache(\n bottomPoints,\n curveType === 'stepBefore' ? 'stepAfter' : curveType === 'stepAfter' ? 'stepBefore' : curveType\n );\n bottomCaches.unshift(lastBottomSeg);\n }\n }\n area.cacheArea = bottomCaches.map((item, index) => ({\n top: topCaches[index],\n bottom: item\n }));\n } else if (points && points.length) {\n // 转换points\n const topPoints = points;\n const bottomPoints: IPointLike[] = [];\n for (let i = points.length - 1; i >= 0; i--) {\n bottomPoints.push({\n x: points[i].x1 ?? points[i].x,\n y: points[i].y1 ?? points[i].y\n });\n }\n const topCache = calcLineCache(topPoints, curveType);\n const bottomCache = calcLineCache(\n bottomPoints,\n curveType === 'stepBefore' ? 'stepAfter' : curveType === 'stepAfter' ? 'stepBefore' : curveType\n );\n\n area.cacheArea = { top: topCache, bottom: bottomCache };\n } else {\n area.cacheArea = null;\n area.clearUpdateShapeTag();\n return;\n }\n area.clearUpdateShapeTag();\n }\n\n if (Array.isArray(area.cacheArea)) {\n const segments = area.attribute.segments.filter(item => item.points.length);\n // 如果第一个seg只有一个点,那么shift出去\n if (segments[0].points.length === 1) {\n segments.shift();\n }\n if (clipRange === 1) {\n let skip = false;\n // 性能优化,不需要clip的线段不需要计算长度\n area.cacheArea.forEach((cache, index) => {\n if (skip) {\n return;\n }\n skip = this.drawSegmentItem(\n context,\n cache,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n segments[index],\n [areaAttribute, area.attribute],\n clipRange,\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n } else {\n // 如果是segments的话,每个clipRange需要重新计算\n // 整个线段的总长度\n const totalLength = area.cacheArea.reduce((l, c) => l + c.top.getLength(), 0);\n // 总需要绘制的长度\n const totalDrawLength = clipRange * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let skip = false;\n area.cacheArea.forEach((cache, index) => {\n if (skip) {\n return;\n }\n const curSegLength = cache.top.getLength();\n const _cr = (totalDrawLength - drawedLengthUntilLast) / curSegLength;\n drawedLengthUntilLast += curSegLength;\n if (_cr > 0) {\n skip = this.drawSegmentItem(\n context,\n cache,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n segments[index],\n [areaAttribute, area.attribute],\n min(_cr, 1),\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n });\n }\n } else {\n this.drawSegmentItem(\n context,\n area.cacheArea as IAreaCacheItem,\n doFill,\n fillOpacity,\n doStroke,\n strokeOpacity,\n area.attribute,\n areaAttribute,\n clipRange,\n x,\n y,\n z,\n area,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n }\n\n draw(area: IArea, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const areaAttribute = getTheme(area, params?.theme).area;\n this._draw(area, areaAttribute, false, drawContext, params);\n }\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: IAreaCacheItem,\n fill: boolean,\n fillOpacity: number,\n stroke: boolean,\n strokeOpacity: number,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n clipRange: number,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n area: IArea,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n let ret = false;\n ret =\n ret ||\n this._drawSegmentItem(\n context,\n cache,\n fill,\n fillOpacity,\n stroke,\n strokeOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n offsetX,\n offsetY,\n offsetZ,\n area,\n drawContext,\n false,\n fillCb,\n strokeCb\n );\n ret =\n ret ||\n this._drawSegmentItem(\n context,\n cache,\n fill,\n fillOpacity,\n stroke,\n strokeOpacity,\n attribute,\n defaultAttribute,\n clipRange,\n offsetX,\n offsetY,\n offsetZ,\n area,\n drawContext,\n true,\n fillCb,\n strokeCb\n );\n return ret;\n }\n\n protected _drawSegmentItem(\n context: IContext2d,\n cache: IAreaCacheItem,\n fill: boolean,\n fillOpacity: number,\n stroke: boolean,\n strokeOpacity: number,\n attribute: Partial<IAreaGraphicAttribute>,\n defaultAttribute: Required<IAreaGraphicAttribute> | Partial<IAreaGraphicAttribute>[],\n clipRange: number,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n area: IArea,\n drawContext: IDrawContext,\n connect: boolean,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ) {\n if (\n !(\n cache &&\n cache.top &&\n cache.bottom &&\n cache.top.curves &&\n cache.top.curves.length &&\n cache.bottom.curves &&\n cache.bottom.curves.length\n )\n ) {\n return;\n }\n // 绘制connect区域\n let { connectedType, connectedX, connectedY, connectedStyle } = attribute;\n const da = [];\n if (connect) {\n if (isArray(defaultAttribute)) {\n connectedType = connectedType ?? defaultAttribute[0].connectedType ?? defaultAttribute[1].connectedType;\n connectedX = connectedX ?? defaultAttribute[0].connectedX ?? defaultAttribute[1].connectedX;\n connectedY = connectedY ?? defaultAttribute[0].connectedY ?? defaultAttribute[1].connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute[0].connectedStyle ?? defaultAttribute[1].connectedStyle;\n } else {\n connectedType = connectedType ?? defaultAttribute.connectedType;\n connectedX = connectedX ?? defaultAttribute.connectedX;\n connectedY = connectedY ?? defaultAttribute.connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute.connectedStyle;\n }\n\n // 如果有非法值就是none\n if (connectedType !== 'connect' && connectedType !== 'zero') {\n connectedType = 'none';\n }\n\n if (isArray(defaultAttribute)) {\n defaultAttribute.forEach(i => da.push(i));\n } else {\n da.push(defaultAttribute);\n }\n da.push(attribute);\n }\n\n if (connect && connectedType === 'none') {\n return false;\n }\n\n context.beginPath();\n\n const ret: boolean = false;\n const { points, segments } = area.attribute;\n let direction = Direction.ROW;\n let endP: IPointLike;\n let startP: IPointLike;\n if (segments) {\n const endSeg = segments[segments.length - 1];\n const startSeg = segments[0];\n startP = startSeg.points[0];\n endP = endSeg.points[endSeg.points.length - 1];\n } else {\n startP = points[0];\n endP = points[points.length - 1];\n }\n const xTotalLength = abs(endP.x - startP.x);\n const yTotalLength = abs(endP.y - startP.y);\n direction = xTotalLength > yTotalLength ? Direction.ROW : Direction.COLUMN;\n drawAreaSegments(context.camera ? context : context.nativeContext, cache, clipRange, {\n offsetX,\n offsetY,\n offsetZ,\n direction,\n drawConnect: connect,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n });\n\n this.beforeRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n defaultAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute }\n );\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(area, attribute, defaultAttribute);\n\n const { x: originX = 0, x: originY = 0 } = attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(\n area,\n connect ? connectedStyle : attribute,\n originX - offsetX,\n originY - offsetY,\n connect ? da : defaultAttribute\n );\n context.fill();\n }\n }\n\n this.afterRenderStep(\n area,\n context,\n offsetX,\n offsetY,\n !!fillOpacity,\n false,\n fill,\n false,\n defaultAttribute as any,\n drawContext,\n fillCb,\n null,\n { attribute }\n );\n\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else {\n const { stroke = defaultAttribute && defaultAttribute[1] && defaultAttribute[1].stroke } = attribute;\n if (isArray(stroke) && (stroke[0] || stroke[2]) && stroke[1] === false) {\n context.beginPath();\n drawSegments(\n context.camera ? context : context.nativeContext,\n stroke[0] ? cache.top : cache.bottom,\n clipRange,\n direction === Direction.ROW ? 'x' : 'y',\n {\n offsetX,\n offsetY,\n offsetZ,\n drawConnect: connect,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n }\n );\n }\n context.setStrokeStyle(\n area,\n connect ? connectedStyle : attribute,\n originX - offsetX,\n originY - offsetY,\n connect ? da : defaultAttribute\n );\n context.stroke();\n }\n }\n\n return ret;\n }\n}\n"]}
|
|
@@ -25,7 +25,7 @@ export declare class DefaultDrawContribution implements IDrawContribution {
|
|
|
25
25
|
getRenderContribution(graphic: IGraphic): IGraphicRender | null;
|
|
26
26
|
renderItem(graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
|
|
27
27
|
protected selectRenderByType(type?: string): IGraphicRender | null;
|
|
28
|
-
protected selectRenderByNumberType(type
|
|
28
|
+
protected selectRenderByNumberType(type: number, graphic: IGraphic): IGraphicRender | null;
|
|
29
29
|
protected clearScreen(renderService: IRenderService, context: IContext2d, drawContext: IDrawContext): void;
|
|
30
30
|
afterDraw(renderService: IRenderService, drawParams: IDrawContext): void;
|
|
31
31
|
}
|
|
@@ -41,15 +41,9 @@ let DefaultDrawContribution = class {
|
|
|
41
41
|
this.prepareForDraw(renderService, drawContext), drawContext.drawContribution = this,
|
|
42
42
|
this.currentRenderMap = this.styleRenderMap.get(drawContext.renderStyle) || this.defaultRenderMap,
|
|
43
43
|
this.currentRenderService = renderService;
|
|
44
|
-
const {context: context, stage: stage,
|
|
44
|
+
const {context: context, stage: stage, viewBox: viewBox, transMatrix: transMatrix} = drawContext;
|
|
45
45
|
if (!context) return;
|
|
46
|
-
|
|
47
|
-
if (context.nativeContext && context.nativeContext.getTransform) {
|
|
48
|
-
const t = context.nativeContext.getTransform();
|
|
49
|
-
context.setTransformFromMatrix(t, !0, 1);
|
|
50
|
-
}
|
|
51
|
-
} else context.inuse = !0, context.clearMatrix(), context.setTransformForCurrent(!0);
|
|
52
|
-
const dirtyBounds = this.dirtyBounds.setValue(0, 0, width, height);
|
|
46
|
+
const dirtyBounds = this.dirtyBounds.setValue(0, 0, viewBox.width(), viewBox.height());
|
|
53
47
|
if (stage.dirtyBounds && !stage.dirtyBounds.empty()) {
|
|
54
48
|
const b = (0, vutils_1.getRectIntersect)(dirtyBounds, stage.dirtyBounds, !1);
|
|
55
49
|
dirtyBounds.x1 = Math.floor(b.x1), dirtyBounds.y1 = Math.floor(b.y1), dirtyBounds.x2 = Math.ceil(b.x2),
|
|
@@ -58,18 +52,19 @@ let DefaultDrawContribution = class {
|
|
|
58
52
|
const d = context.dpr % 1;
|
|
59
53
|
(d || .5 !== d) && (dirtyBounds.x1 = Math.floor(dirtyBounds.x1 * context.dpr) / context.dpr,
|
|
60
54
|
dirtyBounds.y1 = Math.floor(dirtyBounds.y1 * context.dpr) / context.dpr, dirtyBounds.x2 = Math.ceil(dirtyBounds.x2 * context.dpr) / context.dpr,
|
|
61
|
-
dirtyBounds.y2 = Math.ceil(dirtyBounds.y2 * context.dpr) / context.dpr), this.backupDirtyBounds.copy(dirtyBounds)
|
|
62
|
-
|
|
63
|
-
context.
|
|
64
|
-
context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height()),
|
|
65
|
-
context.clip()
|
|
55
|
+
dirtyBounds.y2 = Math.ceil(dirtyBounds.y2 * context.dpr) / context.dpr), this.backupDirtyBounds.copy(dirtyBounds),
|
|
56
|
+
context.inuse = !0, context.setClearMatrix(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f),
|
|
57
|
+
context.clearMatrix(), context.setTransformForCurrent(!0), context.translate(viewBox.x1, viewBox.y1, !0),
|
|
58
|
+
context.beginPath(), context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height()),
|
|
59
|
+
context.clip(), stage.camera && (this.dirtyBounds.setValue(-1 / 0, -1 / 0, 1 / 0, 1 / 0),
|
|
66
60
|
this.backupDirtyBounds.setValue(-1 / 0, -1 / 0, 1 / 0, 1 / 0)), this.clearScreen(renderService, context, drawContext),
|
|
67
61
|
context.save(), renderService.renderTreeRoots.sort(((a, b) => {
|
|
68
62
|
var _a, _b;
|
|
69
63
|
return (null !== (_a = a.attribute.zIndex) && void 0 !== _a ? _a : graphic_1.DefaultAttribute.zIndex) - (null !== (_b = b.attribute.zIndex) && void 0 !== _b ? _b : graphic_1.DefaultAttribute.zIndex);
|
|
70
64
|
})).forEach((group => {
|
|
71
65
|
group.isContainer ? this.renderGroup(group, drawContext, matrix_allocate_1.matrixAllocate.allocate(1, 0, 0, 1, 0, 0)) : this.renderItem(group, drawContext);
|
|
72
|
-
})), context.restore(), context.
|
|
66
|
+
})), context.restore(), context.draw(), context.setClearMatrix(1, 0, 0, 1, 0, 0),
|
|
67
|
+
context.inuse = !1;
|
|
73
68
|
}
|
|
74
69
|
doRegister() {
|
|
75
70
|
throw new Error("暂不支持");
|
|
@@ -145,7 +140,7 @@ let DefaultDrawContribution = class {
|
|
|
145
140
|
}
|
|
146
141
|
getRenderContribution(graphic) {
|
|
147
142
|
let renderer;
|
|
148
|
-
return renderer || (renderer = this.selectRenderByNumberType(graphic.numberType)),
|
|
143
|
+
return renderer || (renderer = this.selectRenderByNumberType(graphic.numberType, graphic)),
|
|
149
144
|
renderer || (renderer = this.selectRenderByType(graphic.type)), renderer;
|
|
150
145
|
}
|
|
151
146
|
renderItem(graphic, drawContext, params) {
|
|
@@ -176,28 +171,32 @@ let DefaultDrawContribution = class {
|
|
|
176
171
|
selectRenderByType(type) {
|
|
177
172
|
return vutils_1.Logger.getInstance().warn("未知错误,不应该走到这里"), null;
|
|
178
173
|
}
|
|
179
|
-
selectRenderByNumberType(type) {
|
|
180
|
-
|
|
174
|
+
selectRenderByNumberType(type, graphic) {
|
|
175
|
+
let data;
|
|
176
|
+
if (graphic.attribute.renderStyle) {
|
|
177
|
+
const currentRenderMap = this.styleRenderMap.get(graphic.attribute.renderStyle);
|
|
178
|
+
data = currentRenderMap && currentRenderMap.get(type);
|
|
179
|
+
}
|
|
180
|
+
return data || this.currentRenderMap.get(type) || this.defaultRenderMap.get(type);
|
|
181
181
|
}
|
|
182
182
|
clearScreen(renderService, context, drawContext) {
|
|
183
183
|
var _a, _b;
|
|
184
|
-
const {clear: clear} = drawContext;
|
|
184
|
+
const {clear: clear, viewBox: viewBox} = drawContext, width = viewBox.width(), height = viewBox.height();
|
|
185
185
|
if (clear) {
|
|
186
|
-
|
|
187
|
-
context.clearRect(x, y, width, height);
|
|
186
|
+
context.clearRect(0, 0, width, height);
|
|
188
187
|
const stage = null === (_a = renderService.drawParams) || void 0 === _a ? void 0 : _a.stage;
|
|
189
188
|
if (stage && (context.globalAlpha = null !== (_b = stage.attribute.opacity) && void 0 !== _b ? _b : 1),
|
|
190
189
|
stage && stage.backgroundImg && stage.resources) {
|
|
191
190
|
const res = stage.resources.get(clear);
|
|
192
|
-
res && "success" === res.state && res.data && context.drawImage(res.data,
|
|
191
|
+
res && "success" === res.state && res.data && context.drawImage(res.data, 0, 0, width, height);
|
|
193
192
|
} else context.fillStyle = (0, canvas_utils_1.createColor)(context, clear, {
|
|
194
193
|
AABBBounds: {
|
|
195
|
-
x1:
|
|
196
|
-
y1:
|
|
197
|
-
x2:
|
|
198
|
-
y2:
|
|
194
|
+
x1: 0,
|
|
195
|
+
y1: 0,
|
|
196
|
+
x2: 0 + width,
|
|
197
|
+
y2: 0 + height
|
|
199
198
|
}
|
|
200
|
-
}, 0, 0), context.fillRect(
|
|
199
|
+
}, 0, 0), context.fillRect(0, 0, width, height);
|
|
201
200
|
}
|
|
202
201
|
}
|
|
203
202
|
afterDraw(renderService, drawParams) {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/draw-contribution.ts"],"names":[],"mappings":"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","file":"draw-contribution.js","sourcesContent":["import { injectable, inject, named, multiInject } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n MaybePromise,\n IGraphic,\n IGroup,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IDrawItemInterceptorContribution,\n IDrawContribution,\n IRenderSelector,\n IGlobal\n} from '../../../interface';\nimport { findNextGraphic, foreach } from '../../../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { DefaultAttribute } from '../../../graphic';\nimport type { IAABBBounds, IBounds, IBoundsLike, IMatrix, IMatrixLike } from '@visactor/vutils';\nimport { Bounds, Logger, getRectIntersect, isRectIntersect, last } from '@visactor/vutils';\nimport { LayerService } from '../../../core/constants';\nimport { container } from '../../../container';\nimport { GraphicRender, IncrementalDrawContribution, RenderSelector } from './symbol';\nimport { DrawItemInterceptor } from './draw-interceptor';\nimport { createColor } from '../../../common/canvas-utils';\nimport type { ILayerService } from '../../../interface/core';\nimport { boundsAllocate } from '../../../allocator/bounds-allocate';\nimport { matrixAllocate } from '../../../allocator/matrix-allocate';\nimport { application } from '../../../application';\n\n/**\n * 默认的渲染contribution,基于树状结构针对图元的渲染\n */\n@injectable()\nexport class DefaultDrawContribution implements IDrawContribution {\n declare currentRenderMap: Map<number, IGraphicRender>;\n declare defaultRenderMap: Map<number, IGraphicRender>;\n declare styleRenderMap: Map<string, Map<number, IGraphicRender>>;\n declare dirtyBounds: IBounds;\n declare backupDirtyBounds: IBounds;\n // 是否使用dirtyBounds\n declare useDirtyBounds: boolean;\n declare currentRenderService: IRenderService;\n declare InterceptorContributions: IDrawItemInterceptorContribution[];\n\n declare global: IGlobal;\n declare layerService: ILayerService;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(GraphicRender)\n // protected readonly contributions: ContributionProvider<IGraphicRender>,\n @multiInject(GraphicRender) protected readonly contributions: IGraphicRender[],\n // @inject(RenderSelector) protected readonly renderSelector: IRenderSelector, // 根据图元类型选择对应的renderItem进行渲染\n // 拦截器\n @inject(ContributionProvider)\n @named(DrawItemInterceptor)\n protected readonly drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>\n ) {\n this.currentRenderMap = new Map();\n this.defaultRenderMap = new Map();\n this.styleRenderMap = new Map();\n this.dirtyBounds = new Bounds();\n this.backupDirtyBounds = new Bounds();\n this.global = application.global;\n this.layerService = application.layerService;\n this.init();\n }\n\n init() {\n this.contributions.forEach(item => {\n if (item.style) {\n const map = this.styleRenderMap.get(item.style) || new Map();\n map.set(item.numberType, item);\n this.styleRenderMap.set(item.style, map);\n } else {\n this.defaultRenderMap.set(item.numberType, item);\n }\n });\n this.InterceptorContributions = this.drawItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n prepareForDraw(renderService: IRenderService, drawContext: IDrawContext) {\n // 有dirtyBounds用dirtyBounds\n if (drawContext.updateBounds) {\n this.useDirtyBounds = true;\n } else {\n // 没有的话,看看是否需要跳过outRange的渲染\n this.useDirtyBounds = !drawContext.stage.params.optimize.disableCheckGraphicWidthOutRange;\n }\n }\n\n draw(renderService: IRenderService, drawContext: IDrawContext): MaybePromise<void> {\n this.prepareForDraw(renderService, drawContext);\n drawContext.drawContribution = this;\n this.currentRenderMap = this.styleRenderMap.get(drawContext.renderStyle) || this.defaultRenderMap;\n // this.startAtId = drawParams.startAtId;\n this.currentRenderService = renderService;\n // this.drawParams = drawParams;\n const { context, stage, x = 0, y = 0, width, height } = drawContext;\n\n if (!context) {\n return;\n }\n // 设置context的transform\n if (drawContext.keepMatrix) {\n if (context.nativeContext && context.nativeContext.getTransform) {\n const t = context.nativeContext.getTransform();\n context.setTransformFromMatrix(t, true, 1);\n }\n } else {\n context.inuse = true;\n // 初始化context\n context.clearMatrix();\n context.setTransformForCurrent(true);\n }\n\n const dirtyBounds: IBounds | undefined = this.dirtyBounds.setValue(0, 0, width, height);\n if (stage.dirtyBounds && !stage.dirtyBounds.empty()) {\n const b = getRectIntersect(dirtyBounds, stage.dirtyBounds, false);\n dirtyBounds.x1 = Math.floor(b.x1);\n dirtyBounds.y1 = Math.floor(b.y1);\n dirtyBounds.x2 = Math.ceil(b.x2);\n dirtyBounds.y2 = Math.ceil(b.y2);\n }\n // 如果dpr不是整数或者.5的小数,需要格式化dirtyBounds\n const d = context.dpr % 1;\n if (d || d !== 0.5) {\n dirtyBounds.x1 = Math.floor(dirtyBounds.x1 * context.dpr) / context.dpr;\n dirtyBounds.y1 = Math.floor(dirtyBounds.y1 * context.dpr) / context.dpr;\n dirtyBounds.x2 = Math.ceil(dirtyBounds.x2 * context.dpr) / context.dpr;\n dirtyBounds.y2 = Math.ceil(dirtyBounds.y2 * context.dpr) / context.dpr;\n }\n this.backupDirtyBounds.copy(dirtyBounds);\n\n const drawInArea =\n dirtyBounds.width() * context.dpr < context.canvas.width ||\n dirtyBounds.height() * context.dpr < context.canvas.height;\n context.save();\n\n // 设置translate\n context.translate(x, y, true);\n if (drawInArea) {\n context.beginPath();\n context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height());\n context.clip();\n }\n\n // 如果存在3d视角,那么不使用dirtyBounds\n if (stage.camera) {\n this.dirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n this.backupDirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n }\n\n this.clearScreen(renderService, context, drawContext);\n // // 渲染的时候图元的起始位置就是x,y\n // this.backupDirtyBounds.translate(-x, -y);\n // this.dirtyBounds.translate(-x, -y);\n\n // // 设置translate\n // context.translate(x, y, true);\n\n context.save();\n renderService.renderTreeRoots\n .sort((a, b) => {\n return (a.attribute.zIndex ?? DefaultAttribute.zIndex) - (b.attribute.zIndex ?? DefaultAttribute.zIndex);\n })\n .forEach(group => {\n group.isContainer\n ? this.renderGroup(group as IGroup, drawContext, matrixAllocate.allocate(1, 0, 0, 1, 0, 0))\n : this.renderItem(group as IGraphic, drawContext);\n });\n\n context.restore();\n context.restore();\n context.draw();\n // this.break = false;\n if (!drawContext.keepMatrix) {\n context.inuse = false;\n }\n }\n\n doRegister() {\n throw new Error('暂不支持');\n }\n\n // 找到下一个graphic\n protected _findNextGraphic(group: IGroup): IGraphic | null {\n let parent = group.parent;\n let id = group._uid;\n while (parent) {\n const g = findNextGraphic(parent, id, DefaultAttribute.zIndex);\n if (g) {\n return g;\n }\n id = parent._uid;\n parent = parent.parent;\n }\n return null;\n }\n\n renderGroup(group: IGroup, drawContext: IDrawContext, parentMatrix: IMatrix, skipSort?: boolean) {\n if (drawContext.break || group.attribute.visibleAll === false) {\n return;\n }\n if (group.incremental && (drawContext.startAtId == null || drawContext.startAtId === group._uid)) {\n drawContext.break = true;\n this._increaseRender(group, drawContext);\n return;\n }\n\n if (this.useDirtyBounds && !isRectIntersect(group.AABBBounds, this.dirtyBounds, false)) {\n return;\n }\n\n let nextM: IMatrix = parentMatrix;\n let tempBounds: IBounds;\n\n if (this.useDirtyBounds) {\n tempBounds = boundsAllocate.allocateByObj(this.dirtyBounds);\n // 变换dirtyBounds\n const gm = group.transMatrix;\n nextM = matrixAllocate.allocateByObj(parentMatrix).multiply(gm.a, gm.b, gm.c, gm.d, gm.e, gm.f);\n // const m = group.globalTransMatrix.getInverse();\n this.dirtyBounds.copy(this.backupDirtyBounds).transformWithMatrix(nextM.getInverse());\n }\n\n this.renderItem(group, drawContext, {\n drawingCb: () => {\n skipSort\n ? group.forEachChildren((item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n this.renderGroup(item as IGroup, drawContext, nextM);\n } else {\n this.renderItem(item, drawContext);\n }\n })\n : foreach(\n group,\n DefaultAttribute.zIndex,\n (item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n this.renderGroup(item as IGroup, drawContext, nextM);\n } else {\n this.renderItem(item, drawContext);\n }\n },\n false,\n !!drawContext.context?.camera\n );\n }\n });\n\n if (this.useDirtyBounds) {\n this.dirtyBounds.copy(tempBounds);\n boundsAllocate.free(tempBounds);\n matrixAllocate.free(nextM);\n }\n }\n\n protected _increaseRender(group: IGroup, drawContext: IDrawContext) {\n const { layer, stage } = drawContext;\n const { subLayers } = layer;\n // 获取渐进渲染层\n let incrementalLayer = subLayers.get(group._uid);\n if (!incrementalLayer) {\n incrementalLayer = {\n layer: this.layerService.createLayer(stage),\n zIndex: subLayers.size,\n group\n };\n subLayers.set(group._uid, incrementalLayer);\n }\n // 渲染\n const incrementalContext = incrementalLayer.layer.getNativeHandler().getContext();\n const idc = incrementalLayer.drawContribution || container.get(IncrementalDrawContribution);\n idc.dirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n idc.backupDirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n (idc as any).draw(this.currentRenderService, {\n ...drawContext,\n drawContribution: idc,\n clear: 'transparent',\n layer: incrementalLayer.layer,\n context: incrementalContext,\n startAtId: group._uid,\n break: false\n });\n incrementalLayer.drawContribution = idc;\n // this.draw(this.currentRenderService, {...this.drawParams, startAtId: group._uid})\n // this.draw(this.currentRenderService, {...this.drawParams, clear: 'transparent', layer: incrementalContext.layer, context: incrementalContext, startAtId: group._uid})\n const nextGraphic = this._findNextGraphic(group);\n if (nextGraphic) {\n // 如果是下一个渐进渲染层,那就再来一次\n if (nextGraphic.isContainer && nextGraphic.incremental) {\n this._increaseRender(nextGraphic as IGroup, drawContext);\n } else {\n // 如果不是渐进渲染层,那就默认图层渲染\n let afterLayer = subLayers.get(nextGraphic._uid);\n if (!afterLayer) {\n afterLayer = {\n layer: this.layerService.createLayer(stage),\n zIndex: subLayers.size\n };\n subLayers.set(nextGraphic._uid, afterLayer);\n }\n const afterContext = afterLayer.layer.getNativeHandler().getContext();\n this.draw(this.currentRenderService, {\n ...drawContext,\n drawContribution: idc,\n clear: 'transparent',\n layer: afterLayer.layer,\n context: afterContext,\n startAtId: nextGraphic._uid,\n break: false\n });\n }\n }\n }\n\n getRenderContribution(graphic: IGraphic): IGraphicRender | null {\n // let renderer = this.renderSelector.selector(graphic);\n let renderer;\n if (!renderer) {\n renderer = this.selectRenderByNumberType(graphic.numberType);\n }\n if (!renderer) {\n renderer = this.selectRenderByType(graphic.type);\n }\n return renderer;\n }\n\n renderItem(graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (\n drawContribution.beforeDrawItem &&\n drawContribution.beforeDrawItem(graphic, this.currentRenderService, drawContext, this, params)\n ) {\n return;\n }\n }\n }\n\n const renderer = this.getRenderContribution(graphic);\n if (!renderer) {\n return;\n }\n\n let retrans: boolean = false;\n let tempBounds: IAABBBounds;\n\n if (graphic.parent) {\n const { scrollX = 0, scrollY = 0 } = graphic.parent.attribute;\n retrans = !!(scrollX || scrollY);\n if (retrans) {\n tempBounds = this.dirtyBounds.clone();\n // 变换dirtyBounds\n const m = graphic.globalTransMatrix.getInverse();\n this.dirtyBounds.copy(this.backupDirtyBounds).transformWithMatrix(m);\n this.dirtyBounds.translate(-scrollX, -scrollY);\n }\n }\n\n if (this.useDirtyBounds && !(graphic.isContainer || isRectIntersect(graphic.AABBBounds, this.dirtyBounds, false))) {\n retrans && this.dirtyBounds.copy(tempBounds);\n return;\n }\n\n const skipDraw = drawContext.startAtId != null && graphic._uid !== drawContext.startAtId;\n if (graphic._uid === drawContext.startAtId) {\n drawContext.startAtId = null;\n }\n params && (params.skipDraw = skipDraw);\n if (skipDraw) {\n graphic.isContainer && renderer.draw(graphic, this.currentRenderService, drawContext, params);\n } else {\n renderer.draw(graphic, this.currentRenderService, drawContext, params);\n }\n\n retrans && this.dirtyBounds.copy(tempBounds);\n\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.afterDrawItem) {\n if (drawContribution.afterDrawItem(graphic, this.currentRenderService, drawContext, this)) {\n return;\n }\n }\n }\n }\n }\n // 根据type选择对应的render\n protected selectRenderByType(type?: string): IGraphicRender | null {\n Logger.getInstance().warn('未知错误,不应该走到这里');\n return null;\n }\n // 根据type选择对应的render\n protected selectRenderByNumberType(type?: number): IGraphicRender | null {\n return this.currentRenderMap.get(type) || this.defaultRenderMap.get(type);\n }\n\n protected clearScreen(renderService: IRenderService, context: IContext2d, drawContext: IDrawContext) {\n const { clear } = drawContext;\n if (clear) {\n const canvas = context.getCanvas();\n const { width = canvas.width, height = canvas.height } = drawContext;\n const x = 0;\n const y = 0;\n context.clearRect(x, y, width, height);\n const stage = renderService.drawParams?.stage;\n stage && (context.globalAlpha = (stage as any).attribute.opacity ?? 1);\n if (stage && (stage as any).backgroundImg && (stage as any).resources) {\n const res = (stage as any).resources.get(clear);\n if (res && res.state === 'success' && res.data) {\n context.drawImage(res.data, x, y, width, height);\n }\n } else {\n context.fillStyle = createColor(\n context,\n clear,\n {\n AABBBounds: { x1: x, y1: y, x2: x + width, y2: y + height }\n },\n 0,\n 0\n );\n context.fillRect(x, y, width, height);\n }\n }\n }\n\n afterDraw(renderService: IRenderService, drawParams: IDrawContext) {\n return;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/draw-contribution.ts"],"names":[],"mappings":"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","file":"draw-contribution.js","sourcesContent":["import { injectable, inject, named, multiInject } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n MaybePromise,\n IGraphic,\n IGroup,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n IDrawItemInterceptorContribution,\n IDrawContribution,\n IRenderSelector,\n IGlobal\n} from '../../../interface';\nimport { findNextGraphic, foreach } from '../../../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { DefaultAttribute } from '../../../graphic';\nimport type { IAABBBounds, IBounds, IBoundsLike, IMatrix, IMatrixLike } from '@visactor/vutils';\nimport { Bounds, Logger, getRectIntersect, isRectIntersect, last } from '@visactor/vutils';\nimport { LayerService } from '../../../core/constants';\nimport { container } from '../../../container';\nimport { GraphicRender, IncrementalDrawContribution, RenderSelector } from './symbol';\nimport { DrawItemInterceptor } from './draw-interceptor';\nimport { createColor } from '../../../common/canvas-utils';\nimport type { ILayerService } from '../../../interface/core';\nimport { boundsAllocate } from '../../../allocator/bounds-allocate';\nimport { matrixAllocate } from '../../../allocator/matrix-allocate';\nimport { application } from '../../../application';\n\n/**\n * 默认的渲染contribution,基于树状结构针对图元的渲染\n */\n@injectable()\nexport class DefaultDrawContribution implements IDrawContribution {\n declare currentRenderMap: Map<number, IGraphicRender>;\n declare defaultRenderMap: Map<number, IGraphicRender>;\n declare styleRenderMap: Map<string, Map<number, IGraphicRender>>;\n declare dirtyBounds: IBounds;\n declare backupDirtyBounds: IBounds;\n // 是否使用dirtyBounds\n declare useDirtyBounds: boolean;\n declare currentRenderService: IRenderService;\n declare InterceptorContributions: IDrawItemInterceptorContribution[];\n\n declare global: IGlobal;\n declare layerService: ILayerService;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(GraphicRender)\n // protected readonly contributions: ContributionProvider<IGraphicRender>,\n @multiInject(GraphicRender) protected readonly contributions: IGraphicRender[],\n // @inject(RenderSelector) protected readonly renderSelector: IRenderSelector, // 根据图元类型选择对应的renderItem进行渲染\n // 拦截器\n @inject(ContributionProvider)\n @named(DrawItemInterceptor)\n protected readonly drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>\n ) {\n this.currentRenderMap = new Map();\n this.defaultRenderMap = new Map();\n this.styleRenderMap = new Map();\n this.dirtyBounds = new Bounds();\n this.backupDirtyBounds = new Bounds();\n this.global = application.global;\n this.layerService = application.layerService;\n this.init();\n }\n\n init() {\n this.contributions.forEach(item => {\n if (item.style) {\n const map = this.styleRenderMap.get(item.style) || new Map();\n map.set(item.numberType, item);\n this.styleRenderMap.set(item.style, map);\n } else {\n this.defaultRenderMap.set(item.numberType, item);\n }\n });\n this.InterceptorContributions = this.drawItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n prepareForDraw(renderService: IRenderService, drawContext: IDrawContext) {\n // 有dirtyBounds用dirtyBounds\n if (drawContext.updateBounds) {\n this.useDirtyBounds = true;\n } else {\n // 没有的话,看看是否需要跳过outRange的渲染\n this.useDirtyBounds = !drawContext.stage.params.optimize.disableCheckGraphicWidthOutRange;\n }\n }\n\n draw(renderService: IRenderService, drawContext: IDrawContext): MaybePromise<void> {\n this.prepareForDraw(renderService, drawContext);\n drawContext.drawContribution = this;\n this.currentRenderMap = this.styleRenderMap.get(drawContext.renderStyle) || this.defaultRenderMap;\n // this.startAtId = drawParams.startAtId;\n this.currentRenderService = renderService;\n // this.drawParams = drawParams;\n const { context, stage, viewBox, transMatrix } = drawContext;\n\n if (!context) {\n return;\n }\n // if (context.drawPromise) {\n // return;\n // }\n const dirtyBounds: IBounds | undefined = this.dirtyBounds.setValue(0, 0, viewBox.width(), viewBox.height());\n if (stage.dirtyBounds && !stage.dirtyBounds.empty()) {\n const b = getRectIntersect(dirtyBounds, stage.dirtyBounds, false);\n dirtyBounds.x1 = Math.floor(b.x1);\n dirtyBounds.y1 = Math.floor(b.y1);\n dirtyBounds.x2 = Math.ceil(b.x2);\n dirtyBounds.y2 = Math.ceil(b.y2);\n }\n // 如果dpr不是整数或者.5的小数,需要格式化dirtyBounds\n const d = context.dpr % 1;\n if (d || d !== 0.5) {\n dirtyBounds.x1 = Math.floor(dirtyBounds.x1 * context.dpr) / context.dpr;\n dirtyBounds.y1 = Math.floor(dirtyBounds.y1 * context.dpr) / context.dpr;\n dirtyBounds.x2 = Math.ceil(dirtyBounds.x2 * context.dpr) / context.dpr;\n dirtyBounds.y2 = Math.ceil(dirtyBounds.y2 * context.dpr) / context.dpr;\n }\n this.backupDirtyBounds.copy(dirtyBounds);\n context.inuse = true;\n context.setClearMatrix(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f);\n // 初始化context\n context.clearMatrix();\n context.setTransformForCurrent(true);\n\n // const drawInArea =\n // dirtyBounds.width() * context.dpr < context.canvas.width ||\n // dirtyBounds.height() * context.dpr < context.canvas.height;\n // context.save();\n\n // 设置translate\n context.translate(viewBox.x1, viewBox.y1, true);\n context.beginPath();\n context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height());\n context.clip();\n\n // 如果存在3d视角,那么不使用dirtyBounds\n if (stage.camera) {\n this.dirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n this.backupDirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n }\n\n this.clearScreen(renderService, context, drawContext);\n // // 渲染的时候图元的起始位置就是x,y\n // this.backupDirtyBounds.translate(-x, -y);\n // this.dirtyBounds.translate(-x, -y);\n\n // // 设置translate\n // context.translate(x, y, true);\n\n context.save();\n renderService.renderTreeRoots\n .sort((a, b) => {\n return (a.attribute.zIndex ?? DefaultAttribute.zIndex) - (b.attribute.zIndex ?? DefaultAttribute.zIndex);\n })\n .forEach(group => {\n group.isContainer\n ? this.renderGroup(group as IGroup, drawContext, matrixAllocate.allocate(1, 0, 0, 1, 0, 0))\n : this.renderItem(group as IGraphic, drawContext);\n });\n\n // context.restore();\n context.restore();\n context.draw();\n context.setClearMatrix(1, 0, 0, 1, 0, 0);\n // this.break = false;\n context.inuse = false;\n }\n\n doRegister() {\n throw new Error('暂不支持');\n }\n\n // 找到下一个graphic\n protected _findNextGraphic(group: IGroup): IGraphic | null {\n let parent = group.parent;\n let id = group._uid;\n while (parent) {\n const g = findNextGraphic(parent, id, DefaultAttribute.zIndex);\n if (g) {\n return g;\n }\n id = parent._uid;\n parent = parent.parent;\n }\n return null;\n }\n\n renderGroup(group: IGroup, drawContext: IDrawContext, parentMatrix: IMatrix, skipSort?: boolean) {\n if (drawContext.break || group.attribute.visibleAll === false) {\n return;\n }\n if (group.incremental && (drawContext.startAtId == null || drawContext.startAtId === group._uid)) {\n drawContext.break = true;\n this._increaseRender(group, drawContext);\n return;\n }\n\n if (this.useDirtyBounds && !isRectIntersect(group.AABBBounds, this.dirtyBounds, false)) {\n return;\n }\n\n let nextM: IMatrix = parentMatrix;\n let tempBounds: IBounds;\n\n if (this.useDirtyBounds) {\n tempBounds = boundsAllocate.allocateByObj(this.dirtyBounds);\n // 变换dirtyBounds\n const gm = group.transMatrix;\n nextM = matrixAllocate.allocateByObj(parentMatrix).multiply(gm.a, gm.b, gm.c, gm.d, gm.e, gm.f);\n // const m = group.globalTransMatrix.getInverse();\n this.dirtyBounds.copy(this.backupDirtyBounds).transformWithMatrix(nextM.getInverse());\n }\n\n this.renderItem(group, drawContext, {\n drawingCb: () => {\n skipSort\n ? group.forEachChildren((item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n this.renderGroup(item as IGroup, drawContext, nextM);\n } else {\n this.renderItem(item, drawContext);\n }\n })\n : foreach(\n group,\n DefaultAttribute.zIndex,\n (item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n this.renderGroup(item as IGroup, drawContext, nextM);\n } else {\n this.renderItem(item, drawContext);\n }\n },\n false,\n !!drawContext.context?.camera\n );\n }\n });\n\n if (this.useDirtyBounds) {\n this.dirtyBounds.copy(tempBounds);\n boundsAllocate.free(tempBounds);\n matrixAllocate.free(nextM);\n }\n }\n\n protected _increaseRender(group: IGroup, drawContext: IDrawContext) {\n const { layer, stage } = drawContext;\n const { subLayers } = layer;\n // 获取渐进渲染层\n let incrementalLayer = subLayers.get(group._uid);\n if (!incrementalLayer) {\n incrementalLayer = {\n layer: this.layerService.createLayer(stage),\n zIndex: subLayers.size,\n group\n };\n subLayers.set(group._uid, incrementalLayer);\n }\n // 渲染\n const incrementalContext = incrementalLayer.layer.getNativeHandler().getContext();\n const idc = incrementalLayer.drawContribution || container.get(IncrementalDrawContribution);\n idc.dirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n idc.backupDirtyBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n (idc as any).draw(this.currentRenderService, {\n ...drawContext,\n drawContribution: idc,\n clear: 'transparent',\n layer: incrementalLayer.layer,\n context: incrementalContext,\n startAtId: group._uid,\n break: false\n });\n incrementalLayer.drawContribution = idc;\n // this.draw(this.currentRenderService, {...this.drawParams, startAtId: group._uid})\n // this.draw(this.currentRenderService, {...this.drawParams, clear: 'transparent', layer: incrementalContext.layer, context: incrementalContext, startAtId: group._uid})\n const nextGraphic = this._findNextGraphic(group);\n if (nextGraphic) {\n // 如果是下一个渐进渲染层,那就再来一次\n if (nextGraphic.isContainer && nextGraphic.incremental) {\n this._increaseRender(nextGraphic as IGroup, drawContext);\n } else {\n // 如果不是渐进渲染层,那就默认图层渲染\n let afterLayer = subLayers.get(nextGraphic._uid);\n if (!afterLayer) {\n afterLayer = {\n layer: this.layerService.createLayer(stage),\n zIndex: subLayers.size\n };\n subLayers.set(nextGraphic._uid, afterLayer);\n }\n const afterContext = afterLayer.layer.getNativeHandler().getContext();\n this.draw(this.currentRenderService, {\n ...drawContext,\n drawContribution: idc,\n clear: 'transparent',\n layer: afterLayer.layer,\n context: afterContext,\n startAtId: nextGraphic._uid,\n break: false\n });\n }\n }\n }\n\n getRenderContribution(graphic: IGraphic): IGraphicRender | null {\n let renderer;\n if (!renderer) {\n renderer = this.selectRenderByNumberType(graphic.numberType, graphic);\n }\n if (!renderer) {\n renderer = this.selectRenderByType(graphic.type);\n }\n return renderer;\n }\n\n renderItem(graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (\n drawContribution.beforeDrawItem &&\n drawContribution.beforeDrawItem(graphic, this.currentRenderService, drawContext, this, params)\n ) {\n return;\n }\n }\n }\n\n const renderer = this.getRenderContribution(graphic);\n if (!renderer) {\n return;\n }\n\n let retrans: boolean = false;\n let tempBounds: IAABBBounds;\n\n if (graphic.parent) {\n const { scrollX = 0, scrollY = 0 } = graphic.parent.attribute;\n retrans = !!(scrollX || scrollY);\n if (retrans) {\n tempBounds = this.dirtyBounds.clone();\n // 变换dirtyBounds\n const m = graphic.globalTransMatrix.getInverse();\n this.dirtyBounds.copy(this.backupDirtyBounds).transformWithMatrix(m);\n this.dirtyBounds.translate(-scrollX, -scrollY);\n }\n }\n\n if (this.useDirtyBounds && !(graphic.isContainer || isRectIntersect(graphic.AABBBounds, this.dirtyBounds, false))) {\n retrans && this.dirtyBounds.copy(tempBounds);\n return;\n }\n\n const skipDraw = drawContext.startAtId != null && graphic._uid !== drawContext.startAtId;\n if (graphic._uid === drawContext.startAtId) {\n drawContext.startAtId = null;\n }\n params && (params.skipDraw = skipDraw);\n if (skipDraw) {\n graphic.isContainer && renderer.draw(graphic, this.currentRenderService, drawContext, params);\n } else {\n renderer.draw(graphic, this.currentRenderService, drawContext, params);\n }\n\n retrans && this.dirtyBounds.copy(tempBounds);\n\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.afterDrawItem) {\n if (drawContribution.afterDrawItem(graphic, this.currentRenderService, drawContext, this)) {\n return;\n }\n }\n }\n }\n }\n // 根据type选择对应的render\n protected selectRenderByType(type?: string): IGraphicRender | null {\n Logger.getInstance().warn('未知错误,不应该走到这里');\n return null;\n }\n // 根据type选择对应的render\n protected selectRenderByNumberType(type: number, graphic: IGraphic): IGraphicRender | null {\n let data;\n if (graphic.attribute.renderStyle) {\n const currentRenderMap = this.styleRenderMap.get(graphic.attribute.renderStyle);\n data = currentRenderMap && currentRenderMap.get(type);\n }\n return data || this.currentRenderMap.get(type) || this.defaultRenderMap.get(type);\n }\n\n protected clearScreen(renderService: IRenderService, context: IContext2d, drawContext: IDrawContext) {\n const { clear, viewBox } = drawContext;\n // 已经translate过了\n const x = 0;\n const y = 0;\n const width = viewBox.width();\n const height = viewBox.height();\n if (clear) {\n context.clearRect(x, y, width, height);\n const stage = renderService.drawParams?.stage;\n stage && (context.globalAlpha = (stage as any).attribute.opacity ?? 1);\n if (stage && (stage as any).backgroundImg && (stage as any).resources) {\n const res = (stage as any).resources.get(clear);\n if (res && res.state === 'success' && res.data) {\n context.drawImage(res.data, x, y, width, height);\n }\n } else {\n context.fillStyle = createColor(\n context,\n clear,\n {\n AABBBounds: { x1: x, y1: y, x2: x + width, y2: y + height }\n },\n 0,\n 0\n );\n context.fillRect(x, y, width, height);\n }\n }\n }\n\n afterDraw(renderService: IRenderService, drawParams: IDrawContext) {\n return;\n }\n}\n"]}
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasImageRender = void 0;
|
|
18
18
|
|
|
19
|
-
const inversify_lite_1 = require("../../../common/inversify-lite"), contribution_provider_1 = require("../../../common/contribution-provider"), theme_1 = require("../../../graphic/theme"), constants_1 = require("./contributions/constants"), constants_2 = require("../../../graphic/constants"), vutils_1 = require("@visactor/vutils"), rect_1 = require("../../../common/shape/rect"), base_render_1 = require("./base-render"), contributions_1 = require("./contributions"), repeatStr = [ "", "repeat-x", "repeat-y", "repeat" ];
|
|
19
|
+
const inversify_lite_1 = require("../../../common/inversify-lite"), contribution_provider_1 = require("../../../common/contribution-provider"), theme_1 = require("../../../graphic/theme"), constants_1 = require("./contributions/constants"), constants_2 = require("../../../graphic/constants"), vutils_1 = require("@visactor/vutils"), rect_1 = require("../../../common/shape/rect"), base_render_1 = require("./base-render"), contributions_1 = require("./contributions"), loader_1 = require("../../../resource-loader/loader"), repeatStr = [ "", "repeat-x", "repeat-y", "repeat" ];
|
|
20
20
|
|
|
21
21
|
let DefaultCanvasImageRender = class extends base_render_1.BaseRender {
|
|
22
22
|
constructor(imageRenderContribitions) {
|
|
@@ -52,7 +52,9 @@ let DefaultCanvasImageRender = class extends base_render_1.BaseRender {
|
|
|
52
52
|
draw(image, renderService, drawContext) {
|
|
53
53
|
const {image: url} = image.attribute;
|
|
54
54
|
if (!url || !image.resources) return;
|
|
55
|
-
|
|
55
|
+
const res = image.resources.get(url);
|
|
56
|
+
if ("loading" === res.state && (0, vutils_1.isString)(url)) return void loader_1.ResourceLoader.improveImageLoading(url);
|
|
57
|
+
if ("success" !== res.state) return;
|
|
56
58
|
const {context: context} = renderService.drawParams;
|
|
57
59
|
if (!context) return;
|
|
58
60
|
const imageAttribute = (0, theme_1.getTheme)(image).image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/image-render.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mEAA2E;AAE3E,iFAA6E;AAC7E,kDAAkD;AAclD,yDAAoE;AAEpE,0DAA+D;AAE/D,
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/image-render.ts"],"names":[],"mappings":"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","file":"image-render.js","sourcesContent":["import { inject, injectable, named } from '../../../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { getTheme } from '../../../graphic/theme';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IImage,\n IThemeAttribute,\n IGraphicRender,\n IImageRenderContribution,\n IContributionProvider,\n IDrawContext,\n IGraphicRenderDrawParams,\n IRenderService\n} from '../../../interface';\nimport { ImageRenderContribution } from './contributions/constants';\nimport { fillVisible, runFill } from './utils';\nimport { IMAGE_NUMBER_TYPE } from '../../../graphic/constants';\nimport { BaseRenderContributionTime } from '../../../common/enums';\nimport { isArray, isString } from '@visactor/vutils';\nimport { createRectPath } from '../../../common/shape/rect';\nimport { BaseRender } from './base-render';\nimport { defaultImageBackgroundRenderContribution } from './contributions';\nimport { ResourceLoader } from '../../../resource-loader/loader';\n\nconst repeatStr = ['', 'repeat-x', 'repeat-y', 'repeat'];\n\n@injectable()\nexport class DefaultCanvasImageRender extends BaseRender<IImage> implements IGraphicRender {\n type: 'image';\n numberType: number = IMAGE_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(ImageRenderContribution)\n protected readonly imageRenderContribitions: IContributionProvider<IImageRenderContribution>\n ) {\n super();\n this.builtinContributions = [defaultImageBackgroundRenderContribution];\n this.init(imageRenderContribitions);\n }\n\n drawShape(\n image: IImage,\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 ) {\n // const imageAttribute = graphicService.themeService.getCurrentTheme().imageAttribute;\n const imageAttribute = getTheme(image).image;\n const {\n width = imageAttribute.width,\n height = imageAttribute.height,\n repeatX = imageAttribute.repeatX,\n repeatY = imageAttribute.repeatY,\n cornerRadius = imageAttribute.cornerRadius,\n image: url\n } = image.attribute;\n\n const data = this.valid(image, imageAttribute, fillCb);\n if (!data) {\n return;\n }\n const { fVisible, sVisible, doFill, doStroke } = data;\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(image, imageAttribute);\n\n this.beforeRenderStep(image, context, x, y, doFill, false, fVisible, false, imageAttribute, drawContext, fillCb);\n\n // context.beginPath();\n // context.image(x, y, width, height);\n\n if (doFill) {\n if (fillCb) {\n fillCb(context, image.attribute, imageAttribute);\n } else if (fVisible) {\n if (!url || !image.resources) {\n return;\n }\n const res = image.resources.get(url);\n if (res.state !== 'success') {\n return;\n }\n\n // deal with cornerRadius\n let needRestore = false;\n if (cornerRadius === 0 || (isArray(cornerRadius) && (<number[]>cornerRadius).every(num => num === 0))) {\n // 不需要处理圆角\n } else {\n context.beginPath();\n createRectPath(context, x, y, width, height, cornerRadius);\n context.save();\n context.clip();\n needRestore = true;\n }\n\n context.setCommonStyle(image, image.attribute, x, y, imageAttribute);\n let repeat = 0;\n if (repeatX === 'repeat') {\n repeat |= 0b0001;\n }\n if (repeatY === 'repeat') {\n repeat |= 0b0010;\n }\n if (repeat) {\n const pattern = context.createPattern(res.data, repeatStr[repeat]);\n context.fillStyle = pattern;\n context.translate(x, y, true);\n context.fillRect(0, 0, width, height);\n context.translate(-x, -y, true);\n } else {\n context.drawImage(res.data, x, y, width, height);\n }\n\n if (needRestore) {\n context.restore();\n }\n }\n }\n\n this.afterRenderStep(image, context, x, y, doFill, false, fVisible, false, imageAttribute, drawContext, fillCb);\n }\n\n draw(image: IImage, renderService: IRenderService, drawContext: IDrawContext) {\n const { image: url } = image.attribute;\n if (!url || !image.resources) {\n return;\n }\n const res = image.resources.get(url);\n // if (res.state !== 'success') {\n // return;\n // }\n if (res.state === 'loading' && isString(url)) {\n ResourceLoader.improveImageLoading(url);\n return;\n } else if (res.state !== 'success') {\n return;\n }\n\n const { context } = renderService.drawParams;\n if (!context) {\n return;\n }\n const imageAttribute = getTheme(image).image;\n this._draw(image, imageAttribute, false, drawContext);\n }\n}\n"]}
|