@visactor/vrender-core 0.16.17-alpha.1 → 0.16.17-alpha.3
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/graphic/graphic-service/graphic-service.d.ts +2 -3
- package/cjs/graphic/graphic-service/graphic-service.js +2 -19
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic.js +1 -1
- package/cjs/graphic/graphic.js.map +1 -1
- package/dist/index.js +4 -53
- package/dist/index.min.js +1 -1
- package/es/graphic/graphic-service/graphic-service.d.ts +2 -3
- package/es/graphic/graphic-service/graphic-service.js +2 -19
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic.js +1 -1
- package/es/graphic/graphic.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphic/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import type { ICustomPath2D } from './../interface/path';\nimport type { OBBBounds, Dict, IPointLike, IAABBBounds } from '@visactor/vutils';\nimport {\n AABBBounds,\n Matrix,\n normalTransform,\n Point,\n isNil,\n has,\n isString,\n isValidUrl,\n isBase64,\n isObject\n} from '@visactor/vutils';\nimport type {\n GraphicType,\n IAnimateConfig,\n IGraphicAttribute,\n IGraphic,\n IGraphicAnimateParams,\n IGraphicJson,\n ISetAttributeContext,\n ITransform,\n GraphicReleaseStatus\n} from '../interface/graphic';\nimport { Node } from './node-tree';\nimport type {\n IAnimate,\n IAnimateTarget,\n IGlyphGraphicAttribute,\n IGroup,\n ILayer,\n IPickerService,\n IShadowRoot,\n IStage,\n IStep,\n ISubAnimate\n} from '../interface';\nimport { EventTarget, CustomEvent } from '../event';\nimport { DefaultTransform } from './config';\nimport { application } from '../application';\nimport { Animate, DefaultStateAnimateConfig } from '../animate';\nimport { interpolateColor } from '../color-string/interpolate';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { ResourceLoader } from '../resource-loader/loader';\nimport { AttributeUpdateType, IContainPointMode, UpdateTag } from '../common/enums';\n\n/**\n * pathProxy参考自zrender\n * BSD 3-Clause License\n\n Copyright (c) 2017, Baidu Inc.\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst tempMatrix = new Matrix();\nconst tempBounds = new AABBBounds();\n\nexport const PURE_STYLE_KEY = [\n 'stroke',\n 'opacity',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'miterLimit',\n 'fill',\n 'fillOpacity'\n];\n\nexport const GRAPHIC_UPDATE_TAG_KEY = [\n 'lineWidth',\n // 'lineCap',\n // 'lineJoin',\n // 'miterLimit',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'visible'\n];\n\nconst tempConstantXYKey = ['x', 'y'];\nconst tempConstantScaleXYKey = ['scaleX', 'scaleY'];\nconst tempConstantAngleKey = ['angle'];\n\nconst point = new Point();\n\nexport const NOWORK_ANIMATE_ATTR = {\n strokeSeg: 1,\n boundsPadding: 2,\n pickMode: 1,\n boundsMode: 1,\n customPickShape: 1,\n pickable: 1,\n childrenPickable: 1,\n visible: 1,\n zIndex: 1,\n layout: 1,\n keepDirIn3d: 1,\n\n outerBorder: 1,\n innerBorder: 1,\n lineDash: 1,\n lineCap: 1,\n lineJoin: 1,\n miterLimit: 2,\n strokeBoundsBuffer: 2,\n\n scaleCenter: 1,\n anchor: 1,\n anchor3d: 1,\n postMatrix: 1,\n\n backgroundMode: 2,\n background: 1,\n texture: 1,\n cursor: 1,\n html: 1\n};\n\n/**\n * globalTransMatrix更新逻辑\n * 1. group的transform修改,会下发到所有下层group,将所有下层的tag修改\n * 2. 叶子graphic每次获取globalTransMatrix都重新计算\n * 3. 所有节点的transform修改,或者globalTransform修改,都会下发到自己的shadowRoot上\n */\n\nexport abstract class Graphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends Node\n implements IGraphic<T>, IAnimateTarget\n{\n /**\n * Mixes all enumerable properties and methods from a source object to Element.\n * @param source - The source of properties and methods to mix in.\n */\n static mixin(source: Dict<any>): void {\n // in ES8/ES2017, this would be really easy:\n // Object.defineProperties(Element.prototype, Object.getOwnPropertyDescriptors(source));\n\n // get all the enumerable property keys\n const keys = Object.keys(source);\n\n // loop through properties\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n\n // Set the property using the property descriptor - this works for accessors and normal value properties\n Object.defineProperty(\n Graphic.prototype,\n propertyName,\n Object.getOwnPropertyDescriptor(source, propertyName) as PropertyDecorator\n );\n }\n }\n\n declare _events?: any;\n\n declare onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n declare parent: any;\n\n declare resources?: Map<\n string,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n declare backgroundImg?: boolean;\n\n declare type: GraphicType;\n declare prefixed: string;\n declare numberType: number;\n declare isContainer?: boolean;\n declare valid: boolean;\n declare stage?: IStage;\n declare layer?: ILayer;\n declare incremental?: number;\n declare glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n declare _onSetStage?: (g: IGraphic, stage: IStage, layer: ILayer) => void;\n // declare _beforeAttributeUpdate?: (key: string | string, value: any) => void;\n // 标记是否是在3d模式下\n declare in3dMode?: boolean;\n\n // aabbBounds,所有图形都需要有,所以初始化即赋值\n protected declare _AABBBounds: AABBBounds;\n get AABBBounds(): AABBBounds {\n return this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n }\n // 具有旋转的包围盒,部分图元需要,动态初始化\n protected declare _OBBBounds?: OBBBounds;\n get OBBBounds(): OBBBounds {\n return this.tryUpdateOBBBounds();\n }\n protected declare _globalAABBBounds: AABBBounds;\n // 全局包围盒,部分图元需要,动态初始化,建议使用AABBBounds\n get globalAABBBounds(): AABBBounds {\n return this.tryUpdateGlobalAABBBounds();\n }\n protected declare _transMatrix: Matrix;\n get transMatrix(): Matrix {\n return this.tryUpdateLocalTransMatrix(true);\n }\n protected declare _globalTransMatrix: Matrix;\n get globalTransMatrix(): Matrix {\n return this.tryUpdateGlobalTransMatrix(true);\n }\n protected declare _updateTag: number;\n\n // 上次更新的stamp\n declare stamp?: number;\n\n declare attribute: T;\n\n declare shadowRoot?: IShadowRoot;\n\n declare releaseStatus?: GraphicReleaseStatus;\n\n /** 记录state对应的图形属性 */\n declare states?: Record<string, Partial<T>>;\n /** 当前state值 */\n declare currentStates?: string[];\n /** TODO: state更新对应的动画配置 */\n declare stateAnimateConfig?: IAnimateConfig;\n /** 记录应用state之前,attribute对应的原始图形属性 */\n declare normalAttrs?: Partial<T>;\n /** 获取state图形属性的方法 */\n declare stateProxy?: (stateName: string, targetStates?: string[]) => T;\n declare animates: Map<string | number, IAnimate>;\n\n declare nextAttrs?: T;\n declare prevAttrs?: T;\n declare finalAttrs?: T;\n\n declare pathProxy?: ICustomPath2D;\n\n constructor(params: T = {} as T) {\n super();\n this._AABBBounds = new AABBBounds();\n this._updateTag = UpdateTag.INIT;\n this.attribute = params;\n this.valid = this.isValid();\n if (params.background) {\n this.loadImage(params.background, true);\n }\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n }\n set2dMode() {\n this.in3dMode = false;\n }\n getOffsetXY(attr?: ITransform, includeScroll: boolean = false) {\n const { dx = attr.dx, dy = attr.dy } = this.attribute;\n if (includeScroll && this.parent) {\n const groupTheme = getTheme(this.parent).group;\n const { scrollX = groupTheme.scrollX, scrollY = groupTheme.scrollY } = this.parent.attribute;\n point.x = dx + scrollX;\n point.y = dy + scrollY;\n } else {\n point.x = dx;\n point.y = dy;\n }\n return point;\n }\n\n onAnimateBind(animate: IAnimate | ISubAnimate) {\n this._emitCustomEvent('animate-bind', animate);\n }\n\n protected tryUpdateAABBBounds(full?: boolean): AABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n if (!this.valid) {\n this._AABBBounds.clear();\n return this._AABBBounds;\n }\n\n application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const bounds = this.doUpdateAABBBounds(full);\n this.addUpdateLayoutTag();\n application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, true);\n return bounds;\n }\n\n protected combindShadowAABBBounds(bounds: IAABBBounds) {\n // 合并shadowRoot的Bounds\n if (this.shadowRoot) {\n const b = this.shadowRoot.AABBBounds.clone();\n bounds.union(b);\n }\n }\n\n protected abstract doUpdateAABBBounds(full?: boolean): AABBBounds;\n\n protected abstract tryUpdateOBBBounds(): OBBBounds;\n\n protected tryUpdateGlobalAABBBounds(): AABBBounds {\n if (!this._globalAABBBounds) {\n this._globalAABBBounds = this.AABBBounds.clone();\n } else {\n this._globalAABBBounds.setValue(\n this._AABBBounds.x1,\n this._AABBBounds.y1,\n this._AABBBounds.x2,\n this._AABBBounds.y2\n );\n }\n // 使用parent的grloalAABBBounds\n // todo: 考虑是否需要性能优化\n if (this.parent) {\n this._globalAABBBounds.transformWithMatrix((this.parent as IGroup).globalTransMatrix);\n }\n return this._globalAABBBounds;\n }\n\n /**\n * 这里都是叶子节点的UpdateGlobalTransMatrix函数,只要走进来就直接计算\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n if (this.shouldUpdateGlobalMatrix()) {\n this.doUpdateGlobalMatrix();\n }\n return this._globalTransMatrix;\n }\n\n shouldUpdateGlobalMatrix(): boolean {\n return true;\n }\n\n protected tryUpdateLocalTransMatrix(clearTag: boolean = true) {\n if (!this._transMatrix) {\n this._transMatrix = new Matrix();\n }\n if (this.shouldUpdateLocalMatrix()) {\n this.doUpdateLocalMatrix();\n clearTag && this.clearUpdateLocalPositionTag();\n }\n return this._transMatrix;\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n // 自身变化导致的AABBBounds的变化\n shouldSelfChangeUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n protected shouldUpdateLocalMatrix(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LOCAL_MATRIX);\n }\n\n isValid(): boolean {\n const attribute = this.attribute;\n return Number.isFinite((attribute.x ?? 0) + (attribute.y ?? 0));\n }\n\n protected _validNumber(num?: number) {\n return num == null || Number.isFinite(num);\n }\n\n shouldUpdateShape(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_SHAPE);\n }\n clearUpdateShapeTag() {\n this._updateTag &= UpdateTag.CLEAR_SHAPE;\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode, picker?: IPickerService): boolean {\n if (!picker) {\n return false;\n }\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n x = point.x;\n y = point.y;\n }\n return picker.containsPoint(this, { x, y });\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n\n if (params.background) {\n this.loadImage(params.background, true);\n }\n\n this._setAttributes(params, forceUpdateTag, context);\n }\n\n _setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n this.attribute[key] = params[key];\n }\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (!params) {\n if (!isNil(this.normalAttrs?.[key])) {\n this.normalAttrs[key] = value;\n } else {\n this.attribute[key] = value;\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n }\n } else {\n this._setAttributes(params, forceUpdateTag, context);\n }\n if (key === 'background') {\n this.loadImage(value, true);\n }\n }\n\n protected needUpdateTags(keys: string[], k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return false;\n }\n\n protected needUpdateTag(key: string, k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (key === attrKey) {\n return true;\n }\n }\n return false;\n }\n\n initAttributes(params: T) {\n // this.setAttributes(params, true);\n const context = { type: AttributeUpdateType.INIT };\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n this.attribute = params;\n if (params.background) {\n this.loadImage(params.background, true);\n }\n this._updateTag = UpdateTag.INIT;\n this.onAttributeUpdate(context);\n }\n\n translate(x: number, y: number) {\n if (x === 0 && y === 0) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n x = params.x;\n y = params.y;\n delete params.x;\n delete params.y;\n this._setAttributes(params);\n }\n const attribute = this.attribute;\n const postMatrix = attribute.postMatrix;\n if (!postMatrix) {\n attribute.x = (attribute.x ?? DefaultTransform.x) + x;\n attribute.y = (attribute.y ?? DefaultTransform.y) + y;\n } else {\n application.transformUtil.fromMatrix(postMatrix, postMatrix).translate(x, y);\n }\n\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n translateTo(x: number, y: number) {\n const attribute = this.attribute;\n if (attribute.x === x && attribute.y === y) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.x = x;\n attribute.y = y;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n scale(scaleX: number, scaleY: number, scaleCenter?: IPointLike) {\n if (scaleX === 1 && scaleY === 1) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY, scaleCenter }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n scaleX = params.scaleX;\n scaleY = params.scaleY;\n delete params.scaleX;\n delete params.scaleY;\n this._setAttributes(params);\n }\n const attribute = this.attribute;\n if (!scaleCenter) {\n attribute.scaleX = (attribute.scaleX ?? DefaultTransform.scaleX) * scaleX;\n attribute.scaleY = (attribute.scaleY ?? DefaultTransform.scaleY) * scaleY;\n } else {\n let { postMatrix } = this.attribute;\n if (!postMatrix) {\n postMatrix = new Matrix();\n attribute.postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter);\n }\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n scaleTo(scaleX: number, scaleY: number) {\n const attribute = this.attribute;\n if (attribute.scaleX === scaleX && attribute.scaleY === scaleY) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.scaleX = scaleX;\n attribute.scaleY = scaleY;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n rotate(angle: number, rotateCenter?: IPointLike) {\n if (angle === 0) {\n return this;\n }\n const context = { type: AttributeUpdateType.ROTATE };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ angle, rotateCenter }, this.attribute, tempConstantAngleKey, context);\n if (params) {\n delete params.angle;\n this._setAttributes(params, false, context);\n // return this;\n }\n const attribute = this.attribute;\n if (!rotateCenter) {\n attribute.angle = (attribute.angle ?? DefaultTransform.angle) + angle;\n } else {\n let { postMatrix } = this.attribute;\n if (!postMatrix) {\n postMatrix = new Matrix();\n attribute.postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter);\n }\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n rotateTo(angle: number) {\n const attribute = this.attribute;\n if (attribute.angle === angle) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.ROTATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate(angle, this.attribute, tempConstantAngleKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.angle = angle;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n skewTo(b: number, c: number) {\n return this;\n }\n\n animate(params?: IGraphicAnimateParams) {\n if (!this.animates) {\n this.animates = new Map();\n }\n const animate = new Animate(params?.id).bind(this);\n if (params) {\n const { onStart, onFrame, onEnd, onRemove } = params;\n onStart != null && animate.onStart(onStart);\n onFrame != null && animate.onFrame(onFrame);\n onEnd != null && animate.onEnd(onEnd);\n onRemove != null && animate.onRemove(onRemove);\n animate.interpolateFunc = params.interpolate;\n }\n this.animates.set(animate.id, animate);\n animate.onRemove(() => {\n this.animates.delete(animate.id);\n });\n\n return animate;\n }\n\n onAttributeUpdate(context?: ISetAttributeContext) {\n if (context && context.skipUpdateCallback) {\n return;\n }\n application.graphicService.onAttributeUpdate(this);\n this._emitCustomEvent('afterAttributeUpdate', context);\n }\n\n // hasListener(event: string) {\n // const prefix = this.prefixed;\n // var evt = prefix ? prefix + event : event;\n // return this._events[evt];\n // }\n\n update(d?: { bounds: boolean; trans: boolean }) {\n if (d) {\n d.bounds && this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n d.trans && this.tryUpdateLocalTransMatrix();\n } else {\n this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n this.tryUpdateLocalTransMatrix();\n }\n }\n\n hasState(stateName?: string) {\n if (!this.currentStates || !this.currentStates.length) {\n return false;\n }\n\n if (!isNil(stateName)) {\n return this.currentStates.includes(stateName);\n }\n\n return true;\n }\n getState(stateName: string) {\n return this.states?.[stateName];\n }\n\n applyStateAttrs(attrs: Partial<T>, stateNames: string[], hasAnimation?: boolean, isClear?: boolean) {\n if (hasAnimation) {\n const keys = Object.keys(attrs);\n const noWorkAAttr = this.getNoWorkAnimateAttr();\n const animateAttrs: Partial<T> = {};\n let noAnimateAttrs: Partial<T> | undefined;\n if (isClear) {\n keys.forEach(key => {\n if (!noWorkAAttr[key]) {\n animateAttrs[key] = attrs[key] === undefined ? this.getDefaultAttribute(key) : attrs[key];\n } else {\n if (!noAnimateAttrs) {\n noAnimateAttrs = {};\n }\n noAnimateAttrs[key] = attrs[key];\n }\n });\n } else {\n keys.forEach(key => {\n if (!noWorkAAttr[key]) {\n animateAttrs[key] = attrs[key];\n } else {\n if (!noAnimateAttrs) {\n noAnimateAttrs = {};\n }\n noAnimateAttrs[key] = attrs[key];\n }\n });\n }\n\n const animate = this.animate();\n (animate as any).stateNames = stateNames;\n animate.to(\n animateAttrs,\n this.stateAnimateConfig?.duration ?? DefaultStateAnimateConfig.duration,\n this.stateAnimateConfig?.easing ?? DefaultStateAnimateConfig.easing\n );\n noAnimateAttrs && this.setAttributes(noAnimateAttrs, false, { type: AttributeUpdateType.STATE });\n } else {\n this.setAttributes(attrs, false, { type: AttributeUpdateType.STATE });\n }\n }\n\n updateNormalAttrs(stateAttrs: Partial<T>) {\n const newNormalAttrs = {};\n if (this.normalAttrs) {\n Object.keys(stateAttrs).forEach(key => {\n if (key in this.normalAttrs) {\n newNormalAttrs[key] = this.normalAttrs[key];\n delete this.normalAttrs[key];\n } else {\n newNormalAttrs[key] = this.getNormalAttribute(key);\n }\n });\n Object.keys(this.normalAttrs).forEach(key => {\n stateAttrs[key] = this.normalAttrs[key];\n });\n } else {\n Object.keys(stateAttrs).forEach(key => {\n newNormalAttrs[key] = this.getNormalAttribute(key);\n });\n }\n\n this.normalAttrs = newNormalAttrs;\n }\n\n private getNormalAttribute(key: string) {\n let value = this.attribute[key];\n\n if (this.animates) {\n this.animates.forEach(animate => {\n if ((animate as any).stateNames) {\n const endProps = animate.getEndProps();\n\n if (has(endProps, key)) {\n value = endProps[key];\n }\n }\n });\n }\n\n return value;\n }\n\n clearStates(hasAnimation?: boolean) {\n if (this.hasState() && this.normalAttrs) {\n this.currentStates = [];\n this.applyStateAttrs(this.normalAttrs, this.currentStates, hasAnimation, true);\n } else {\n this.currentStates = [];\n }\n this.normalAttrs = null;\n }\n\n removeState(stateName: string, hasAnimation?: boolean) {\n const index = this.currentStates ? this.currentStates.indexOf(stateName) : -1;\n\n if (index >= 0) {\n const currentStates = this.currentStates.filter(state => state !== stateName);\n\n this.useStates(currentStates, hasAnimation);\n }\n }\n\n toggleState(stateName: string, hasAnimation?: boolean) {\n if (this.hasState(stateName)) {\n this.removeState(stateName, hasAnimation);\n } else {\n const index = this.currentStates ? this.currentStates.indexOf(stateName) : -1;\n if (index < 0) {\n const nextStates = this.currentStates ? this.currentStates.slice() : [];\n nextStates.push(stateName);\n this.useStates(nextStates, hasAnimation);\n }\n }\n }\n\n addState(stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) {\n if (\n this.currentStates &&\n this.currentStates.includes(stateName) &&\n (keepCurrentStates || this.currentStates.length === 1)\n ) {\n return;\n }\n\n const newStates =\n keepCurrentStates && this.currentStates?.length ? this.currentStates.concat([stateName]) : [stateName];\n\n this.useStates(newStates, hasAnimation);\n }\n\n useStates(states: string[], hasAnimation?: boolean) {\n if (!states.length) {\n this.clearStates(hasAnimation);\n return;\n }\n\n const isChange =\n this.currentStates?.length !== states.length ||\n states.some((stateName, index) => this.currentStates[index] !== stateName);\n\n if (!isChange) {\n return;\n }\n\n const stateAttrs = {};\n states.forEach(stateName => {\n const attrs = this.stateProxy ? this.stateProxy(stateName, states) : this.states?.[stateName];\n\n if (attrs) {\n Object.assign(stateAttrs, attrs);\n }\n });\n\n this.updateNormalAttrs(stateAttrs);\n\n this.currentStates = states;\n this.applyStateAttrs(stateAttrs, states, hasAnimation);\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n addUpdateShapeTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE; // for shape\n }\n\n addUpdateShapeAndBoundsTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS; // for shape&bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n protected updateShapeAndBoundsTagSetted(): boolean {\n return (this._updateTag & UpdateTag.UPDATE_SHAPE_AND_BOUNDS) === UpdateTag.UPDATE_SHAPE_AND_BOUNDS;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX;\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_MATRIX;\n }\n /**\n * 清除局部位置tag\n */\n protected clearUpdateLocalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_LOCAL_MATRIX;\n }\n /**\n * 清除全局位置tag\n */\n protected clearUpdateGlobalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_GLOBAL_MATRIX;\n }\n\n addUpdateLayoutTag() {\n this._updateTag |= UpdateTag.UPDATE_LAYOUT;\n }\n\n protected clearUpdateLayoutTag() {\n this._updateTag &= UpdateTag.CLEAR_LAYOUT;\n }\n\n protected needUpdateLayout(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LAYOUT);\n }\n\n protected getAnchor(anchor: [string | number, string | number], params: { b?: IAABBBounds }) {\n const _anchor: [number, number] = [0, 0];\n const getBounds = () => {\n if (params.b) {\n return params.b;\n }\n const { scaleX, scaleY, angle } = this.attribute;\n // 拷贝一份,避免计算bounds的过程中计算matrix,然后matrix又修改了bounds\n tempBounds.copy(this._AABBBounds);\n // @ts-ignore\n this.setAttributes({ scaleX: 1, scaleY: 1, angle: 0 });\n params.b = this.AABBBounds.clone();\n this._AABBBounds.copy(tempBounds);\n // @ts-ignore\n this.setAttributes({ scaleX, scaleY, angle });\n return params.b;\n };\n if (typeof anchor[0] === 'string') {\n const ratio = parseFloat(anchor[0]) / 100;\n const bounds = getBounds();\n _anchor[0] = bounds.x1 + (bounds.x2 - bounds.x1) * ratio;\n } else {\n _anchor[0] = anchor[0];\n }\n if (typeof anchor[1] === 'string') {\n const ratio = parseFloat(anchor[1]) / 100;\n const bounds = getBounds();\n _anchor[1] = bounds.y1 + (bounds.y2 - bounds.y1) * ratio;\n } else {\n _anchor[1] = anchor[1];\n }\n\n return _anchor;\n }\n\n /**\n * 更新局部matrix的具体函数\n */\n protected doUpdateLocalMatrix() {\n const {\n x = DefaultTransform.x,\n y = DefaultTransform.y,\n scaleX = DefaultTransform.scaleX,\n scaleY = DefaultTransform.scaleY,\n angle = DefaultTransform.angle,\n scaleCenter,\n anchor,\n postMatrix\n } = this.attribute;\n let _anchor: [number, number] = [0, 0];\n const params = {};\n if (anchor) {\n _anchor = this.getAnchor(anchor, params);\n }\n if (scaleCenter && (scaleX !== 1 || scaleY !== 1)) {\n const m = this._transMatrix;\n m.reset();\n m.translate(_anchor[0], _anchor[1]);\n m.rotate(angle);\n m.translate(-_anchor[0], -_anchor[1]);\n\n m.translate(x, y);\n // m.translate(scaleCenter[0] * scaleX, scaleCenter[1] * scaleY);\n // 计算bounds\n _anchor = this.getAnchor(scaleCenter, params);\n application.transformUtil.fromMatrix(m, m).scale(scaleX, scaleY, { x: _anchor[0], y: _anchor[1] });\n // m.translate(-scaleCenter[0], -scaleCenter[1]);\n } else {\n normalTransform(this._transMatrix, this._transMatrix.reset(), x, y, scaleX, scaleY, angle, anchor && _anchor);\n }\n const p = this.getOffsetXY(DefaultTransform);\n this._transMatrix.e += p.x;\n this._transMatrix.f += p.y;\n\n if (postMatrix) {\n const m1 = tempMatrix.setValue(\n postMatrix.a,\n postMatrix.b,\n postMatrix.c,\n postMatrix.d,\n postMatrix.e,\n postMatrix.f\n );\n const m2 = this._transMatrix;\n m1.multiply(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f);\n m2.setValue(m1.a, m1.b, m1.c, m1.d, m1.e, m1.f);\n }\n }\n /**\n * 更新全局matrix的具体函数\n */\n protected doUpdateGlobalMatrix() {\n // 基于parent的matrix修改\n if (this.parent) {\n this._globalTransMatrix.multiply(\n this.transMatrix.a,\n this.transMatrix.b,\n this.transMatrix.c,\n this.transMatrix.d,\n this.transMatrix.e,\n this.transMatrix.f\n );\n const { scrollX = 0, scrollY = 0 } = this.parent.attribute;\n this._globalTransMatrix.translate(scrollX, scrollY);\n }\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n if (this.stage !== stage) {\n this.stage = stage;\n this.layer = layer;\n this.setStageToShadowRoot(stage, layer);\n if (this.animates && this.animates.size) {\n const timeline = stage.getTimeline();\n this.animates.forEach(a => {\n a.setTimeline(timeline);\n });\n }\n this._onSetStage && this._onSetStage(this, stage, layer);\n application.graphicService.onSetStage(this, stage);\n }\n }\n\n setStageToShadowRoot(stage?: IStage, layer?: ILayer) {\n if (this.shadowRoot) {\n this.shadowRoot.setStage(stage, layer);\n }\n }\n\n onAddStep(step: IStep) {\n return;\n }\n onStop(props?: Partial<T>): void {\n if (props) {\n this.setAttributes(props, false, { type: AttributeUpdateType.ANIMATE_END });\n }\n }\n // step时调用\n onStep(subAnimate: ISubAnimate, animate: IAnimate, step: IStep, ratio: number, end: boolean) {\n const nextAttributes = {};\n if (step.customAnimate) {\n step.customAnimate.update(end, ratio, nextAttributes);\n } else {\n const nextProps = step.props;\n const nextParsedProps = step.parsedProps;\n const propKeys = step.propKeys;\n this.stepInterpolate(\n subAnimate,\n animate,\n nextAttributes,\n step,\n ratio,\n end,\n nextProps,\n undefined,\n nextParsedProps,\n propKeys\n );\n }\n this.setAttributes(nextAttributes, false, {\n type: AttributeUpdateType.ANIMATE_UPDATE,\n animationState: {\n ratio,\n end,\n step,\n isFirstFrameOfStep: subAnimate.getLastStep() !== step\n }\n });\n this.stage && this.stage.renderNextFrame();\n }\n\n stepInterpolate(\n subAnimate: ISubAnimate,\n animate: IAnimate,\n nextAttributes: Record<string, any>,\n step: IStep,\n ratio: number,\n end: boolean,\n nextProps: Record<string, any>,\n lastProps?: Record<string, any>,\n nextParsedProps?: any,\n propKeys?: string[]\n ) {\n if (!propKeys) {\n propKeys = Object.keys(nextProps);\n step.propKeys = propKeys;\n }\n if (end) {\n step.propKeys.forEach(key => {\n if (!animate.validAttr(key)) {\n return;\n }\n nextAttributes[key] = nextProps[key];\n });\n } else {\n propKeys.forEach(key => {\n // 如果属性不合法,那直接return\n if (!animate.validAttr(key)) {\n return;\n }\n const nextStepVal = nextProps[key];\n const lastStepVal = (lastProps && lastProps[key]) ?? subAnimate.getLastPropByName(key, step);\n let match: boolean;\n match =\n animate.interpolateFunc && animate.interpolateFunc(key, ratio, lastStepVal, nextStepVal, nextAttributes);\n if (match) {\n return;\n }\n match = animate.customInterpolate(key, ratio, lastStepVal, nextStepVal, this, nextAttributes);\n if (match) {\n return;\n }\n if (!this.defaultInterpolate(nextStepVal, lastStepVal, key, nextAttributes, nextParsedProps, ratio)) {\n this._interpolate(key, ratio, lastStepVal, nextStepVal, nextAttributes);\n }\n });\n }\n\n step.parsedProps = nextParsedProps;\n }\n\n defaultInterpolate(\n nextStepVal: any,\n lastStepVal: any,\n key: string,\n nextAttributes: Record<string, any>,\n nextParsedProps: any,\n ratio: number\n ) {\n if (Number.isFinite(nextStepVal)) {\n nextAttributes[key] = lastStepVal + (nextStepVal - lastStepVal) * ratio;\n return true;\n } else if (key === 'fill') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const fillColorArray: [number, number, number, number] = nextParsedProps.fillColorArray;\n const color = interpolateColor(lastStepVal, fillColorArray ?? nextStepVal, ratio, false, (fArray, tArray) => {\n nextParsedProps.fillColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n return true;\n } else if (key === 'stroke') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const strokeColorArray: [number, number, number, number] = nextParsedProps.strokeColorArray;\n const color = interpolateColor(lastStepVal, strokeColorArray ?? nextStepVal, ratio, false, (fArray, tArray) => {\n nextParsedProps.strokeColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n return true;\n } else if (key === 'shadowColor') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const shadowColorArray: [number, number, number, number] = nextParsedProps.shadowColorArray;\n const color = interpolateColor(lastStepVal, shadowColorArray ?? nextStepVal, ratio, true, (fArray, tArray) => {\n nextParsedProps.shadowColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n\n return true;\n }\n\n return false;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any) {\n return;\n }\n\n getDefaultAttribute(name: string) {\n return getTheme(this as any)[this.type][name];\n }\n\n // 获取属性\n getComputedAttribute(name: string) {\n return this.attribute[name] ?? this.getDefaultAttribute(name);\n }\n /**\n * 添加onSetStage钩子\n * @param cb 回调函数\n * @param immediate 是否立刻执行,如果在回调添加之前stage就已经绑定,那么如果第二个参数为true就立刻执行回调\n */\n onSetStage(cb: (g: IGraphic, stage: IStage) => void, immediate: boolean = false) {\n this._onSetStage = cb;\n if (immediate && this.stage) {\n cb(this, this.stage);\n }\n }\n\n /******************** shadow graphic *********************/\n attachShadow(shadowRoot?: IShadowRoot) {\n if (shadowRoot) {\n shadowRoot.shadowHost = this;\n }\n\n this.shadowRoot = shadowRoot ?? application.graphicService.creator.shadowRoot(this);\n this.addUpdateBoundTag();\n this.shadowRoot.setStage(this.stage, this.layer);\n return this.shadowRoot;\n }\n\n detachShadow() {\n if (this.shadowRoot) {\n this.addUpdateBoundTag();\n this.shadowRoot = null;\n }\n }\n\n toJson(): IGraphicJson {\n return {\n attribute: this.attribute,\n _uid: this._uid,\n type: this.type,\n name: this.name,\n children: this.children.map((item: IGraphic) => item.toJson())\n };\n }\n\n createPathProxy(path?: string) {\n if (isString(path, true)) {\n this.pathProxy = new CustomPath2D().fromString(path as string);\n } else {\n this.pathProxy = new CustomPath2D();\n }\n\n return this.pathProxy;\n }\n\n loadImage(image: any, background: boolean = false) {\n if (!image || (background && backgroundNotImage(image))) {\n return;\n }\n const url = image;\n if (!this.resources) {\n this.resources = new Map();\n }\n const cache: {\n state: 'loading' | 'success' | 'init' | 'fail';\n data: any;\n } = {\n data: 'init',\n state: null\n };\n this.resources.set(url, cache);\n if (typeof image === 'string') {\n cache.state = 'loading';\n if (image.startsWith('<svg')) {\n // TODO 封装isSvg到@visactor/vutils\n ResourceLoader.GetSvg(image, this);\n this.backgroundImg = this.backgroundImg || background;\n } else if (isValidUrl(image) || image.includes('/') || isBase64(image)) {\n ResourceLoader.GetImage(image, this);\n this.backgroundImg = this.backgroundImg || background;\n }\n } else {\n (cache.state = 'success'), (cache.data = image);\n this.backgroundImg = this.backgroundImg || background;\n }\n }\n\n imageLoadSuccess(url: string, image: HTMLImageElement, cb?: () => void) {\n // 更新属性\n // this.resourceState = 'success';\n // this.resource = image;\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'success';\n res.data = image;\n\n cb && cb();\n\n // 触发重绘\n // 暂时全量,TODO 启动局部重绘\n // this.stage.enableDirtyBounds();\n // this.stage.dirty(this.AABBBounds);\n this.addUpdateBoundTag(); // 添加bounds更新tag重绘才会绘制这个mark\n this.stage && this.stage.renderNextFrame();\n }\n\n imageLoadFail(url: string, cb?: () => void) {\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'fail';\n\n cb && cb();\n }\n\n private _stopAnimates(animates: Map<string | number, IAnimate>) {\n if (animates) {\n animates.forEach(animate => {\n animate.stop();\n });\n }\n }\n\n stopAnimates(stopChildren: boolean = false) {\n this._stopAnimates(this.animates);\n\n if (this.shadowRoot) {\n // 停止所有影子节点的动画\n this.shadowRoot.stopAnimates(true);\n }\n if (this.isContainer && stopChildren) {\n this.forEachChildren((c: IGraphic) => {\n c.stopAnimates(stopChildren);\n });\n }\n }\n\n release(): void {\n this.releaseStatus = 'released';\n application.graphicService.onRelease(this);\n }\n\n protected _emitCustomEvent(type: string, context?: any) {\n if (this._events && type in this._events) {\n const changeEvent = new CustomEvent(type, context);\n changeEvent.bubbles = false;\n\n (changeEvent as any).manager = (this.stage as any)?.eventSystem?.manager;\n this.dispatchEvent(changeEvent);\n }\n }\n\n abstract getNoWorkAnimateAttr(): Record<string, number>;\n\n abstract clone(): Graphic<any>;\n}\n\nGraphic.mixin(EventTarget);\n\nfunction backgroundNotImage(image: any) {\n if (image.fill || image.stroke) {\n return true;\n }\n return false;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graphic/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import type { ICustomPath2D } from './../interface/path';\nimport type { OBBBounds, Dict, IPointLike, IAABBBounds } from '@visactor/vutils';\nimport {\n AABBBounds,\n Matrix,\n normalTransform,\n Point,\n isNil,\n has,\n isString,\n isValidUrl,\n isBase64,\n isObject\n} from '@visactor/vutils';\nimport type {\n GraphicType,\n IAnimateConfig,\n IGraphicAttribute,\n IGraphic,\n IGraphicAnimateParams,\n IGraphicJson,\n ISetAttributeContext,\n ITransform,\n GraphicReleaseStatus\n} from '../interface/graphic';\nimport { Node } from './node-tree';\nimport type {\n IAnimate,\n IAnimateTarget,\n IGlyphGraphicAttribute,\n IGroup,\n ILayer,\n IPickerService,\n IShadowRoot,\n IStage,\n IStep,\n ISubAnimate\n} from '../interface';\nimport { EventTarget, CustomEvent } from '../event';\nimport { DefaultTransform } from './config';\nimport { application } from '../application';\nimport { Animate, DefaultStateAnimateConfig } from '../animate';\nimport { interpolateColor } from '../color-string/interpolate';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { getTheme } from './theme';\nimport { ResourceLoader } from '../resource-loader/loader';\nimport { AttributeUpdateType, IContainPointMode, UpdateTag } from '../common/enums';\n\n/**\n * pathProxy参考自zrender\n * BSD 3-Clause License\n\n Copyright (c) 2017, Baidu Inc.\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst tempMatrix = new Matrix();\nconst tempBounds = new AABBBounds();\n\nexport const PURE_STYLE_KEY = [\n 'stroke',\n 'opacity',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'miterLimit',\n 'fill',\n 'fillOpacity'\n];\n\nexport const GRAPHIC_UPDATE_TAG_KEY = [\n 'lineWidth',\n 'lineCap',\n 'lineJoin',\n 'miterLimit',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor'\n];\n\nconst tempConstantXYKey = ['x', 'y'];\nconst tempConstantScaleXYKey = ['scaleX', 'scaleY'];\nconst tempConstantAngleKey = ['angle'];\n\nconst point = new Point();\n\nexport const NOWORK_ANIMATE_ATTR = {\n strokeSeg: 1,\n boundsPadding: 2,\n pickMode: 1,\n boundsMode: 1,\n customPickShape: 1,\n pickable: 1,\n childrenPickable: 1,\n visible: 1,\n zIndex: 1,\n layout: 1,\n keepDirIn3d: 1,\n\n outerBorder: 1,\n innerBorder: 1,\n lineDash: 1,\n lineCap: 1,\n lineJoin: 1,\n miterLimit: 2,\n strokeBoundsBuffer: 2,\n\n scaleCenter: 1,\n anchor: 1,\n anchor3d: 1,\n postMatrix: 1,\n\n backgroundMode: 2,\n background: 1,\n texture: 1,\n cursor: 1,\n html: 1\n};\n\n/**\n * globalTransMatrix更新逻辑\n * 1. group的transform修改,会下发到所有下层group,将所有下层的tag修改\n * 2. 叶子graphic每次获取globalTransMatrix都重新计算\n * 3. 所有节点的transform修改,或者globalTransform修改,都会下发到自己的shadowRoot上\n */\n\nexport abstract class Graphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends Node\n implements IGraphic<T>, IAnimateTarget\n{\n /**\n * Mixes all enumerable properties and methods from a source object to Element.\n * @param source - The source of properties and methods to mix in.\n */\n static mixin(source: Dict<any>): void {\n // in ES8/ES2017, this would be really easy:\n // Object.defineProperties(Element.prototype, Object.getOwnPropertyDescriptors(source));\n\n // get all the enumerable property keys\n const keys = Object.keys(source);\n\n // loop through properties\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n\n // Set the property using the property descriptor - this works for accessors and normal value properties\n Object.defineProperty(\n Graphic.prototype,\n propertyName,\n Object.getOwnPropertyDescriptor(source, propertyName) as PropertyDecorator\n );\n }\n }\n\n declare _events?: any;\n\n declare onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n declare parent: any;\n\n declare resources?: Map<\n string,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n declare backgroundImg?: boolean;\n\n declare type: GraphicType;\n declare prefixed: string;\n declare numberType: number;\n declare isContainer?: boolean;\n declare valid: boolean;\n declare stage?: IStage;\n declare layer?: ILayer;\n declare incremental?: number;\n declare glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n declare _onSetStage?: (g: IGraphic, stage: IStage, layer: ILayer) => void;\n // declare _beforeAttributeUpdate?: (key: string | string, value: any) => void;\n // 标记是否是在3d模式下\n declare in3dMode?: boolean;\n\n // aabbBounds,所有图形都需要有,所以初始化即赋值\n protected declare _AABBBounds: AABBBounds;\n get AABBBounds(): AABBBounds {\n return this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n }\n // 具有旋转的包围盒,部分图元需要,动态初始化\n protected declare _OBBBounds?: OBBBounds;\n get OBBBounds(): OBBBounds {\n return this.tryUpdateOBBBounds();\n }\n protected declare _globalAABBBounds: AABBBounds;\n // 全局包围盒,部分图元需要,动态初始化,建议使用AABBBounds\n get globalAABBBounds(): AABBBounds {\n return this.tryUpdateGlobalAABBBounds();\n }\n protected declare _transMatrix: Matrix;\n get transMatrix(): Matrix {\n return this.tryUpdateLocalTransMatrix(true);\n }\n protected declare _globalTransMatrix: Matrix;\n get globalTransMatrix(): Matrix {\n return this.tryUpdateGlobalTransMatrix(true);\n }\n protected declare _updateTag: number;\n\n // 上次更新的stamp\n declare stamp?: number;\n\n declare attribute: T;\n\n declare shadowRoot?: IShadowRoot;\n\n declare releaseStatus?: GraphicReleaseStatus;\n\n /** 记录state对应的图形属性 */\n declare states?: Record<string, Partial<T>>;\n /** 当前state值 */\n declare currentStates?: string[];\n /** TODO: state更新对应的动画配置 */\n declare stateAnimateConfig?: IAnimateConfig;\n /** 记录应用state之前,attribute对应的原始图形属性 */\n declare normalAttrs?: Partial<T>;\n /** 获取state图形属性的方法 */\n declare stateProxy?: (stateName: string, targetStates?: string[]) => T;\n declare animates: Map<string | number, IAnimate>;\n\n declare nextAttrs?: T;\n declare prevAttrs?: T;\n declare finalAttrs?: T;\n\n declare pathProxy?: ICustomPath2D;\n\n constructor(params: T = {} as T) {\n super();\n this._AABBBounds = new AABBBounds();\n this._updateTag = UpdateTag.INIT;\n this.attribute = params;\n this.valid = this.isValid();\n if (params.background) {\n this.loadImage(params.background, true);\n }\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n }\n set2dMode() {\n this.in3dMode = false;\n }\n getOffsetXY(attr?: ITransform, includeScroll: boolean = false) {\n const { dx = attr.dx, dy = attr.dy } = this.attribute;\n if (includeScroll && this.parent) {\n const groupTheme = getTheme(this.parent).group;\n const { scrollX = groupTheme.scrollX, scrollY = groupTheme.scrollY } = this.parent.attribute;\n point.x = dx + scrollX;\n point.y = dy + scrollY;\n } else {\n point.x = dx;\n point.y = dy;\n }\n return point;\n }\n\n onAnimateBind(animate: IAnimate | ISubAnimate) {\n this._emitCustomEvent('animate-bind', animate);\n }\n\n protected tryUpdateAABBBounds(full?: boolean): AABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n if (!this.valid) {\n this._AABBBounds.clear();\n return this._AABBBounds;\n }\n\n application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const bounds = this.doUpdateAABBBounds(full);\n this.addUpdateLayoutTag();\n application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, true);\n return bounds;\n }\n\n protected combindShadowAABBBounds(bounds: IAABBBounds) {\n // 合并shadowRoot的Bounds\n if (this.shadowRoot) {\n const b = this.shadowRoot.AABBBounds.clone();\n bounds.union(b);\n }\n }\n\n protected abstract doUpdateAABBBounds(full?: boolean): AABBBounds;\n\n protected abstract tryUpdateOBBBounds(): OBBBounds;\n\n protected tryUpdateGlobalAABBBounds(): AABBBounds {\n if (!this._globalAABBBounds) {\n this._globalAABBBounds = this.AABBBounds.clone();\n } else {\n this._globalAABBBounds.setValue(\n this._AABBBounds.x1,\n this._AABBBounds.y1,\n this._AABBBounds.x2,\n this._AABBBounds.y2\n );\n }\n // 使用parent的grloalAABBBounds\n // todo: 考虑是否需要性能优化\n if (this.parent) {\n this._globalAABBBounds.transformWithMatrix((this.parent as IGroup).globalTransMatrix);\n }\n return this._globalAABBBounds;\n }\n\n /**\n * 这里都是叶子节点的UpdateGlobalTransMatrix函数,只要走进来就直接计算\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n if (this.shouldUpdateGlobalMatrix()) {\n this.doUpdateGlobalMatrix();\n }\n return this._globalTransMatrix;\n }\n\n shouldUpdateGlobalMatrix(): boolean {\n return true;\n }\n\n protected tryUpdateLocalTransMatrix(clearTag: boolean = true) {\n if (!this._transMatrix) {\n this._transMatrix = new Matrix();\n }\n if (this.shouldUpdateLocalMatrix()) {\n this.doUpdateLocalMatrix();\n clearTag && this.clearUpdateLocalPositionTag();\n }\n return this._transMatrix;\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n // 自身变化导致的AABBBounds的变化\n shouldSelfChangeUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n protected shouldUpdateLocalMatrix(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LOCAL_MATRIX);\n }\n\n isValid(): boolean {\n const attribute = this.attribute;\n return Number.isFinite((attribute.x ?? 0) + (attribute.y ?? 0));\n }\n\n protected _validNumber(num?: number) {\n return num == null || Number.isFinite(num);\n }\n\n shouldUpdateShape(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_SHAPE);\n }\n clearUpdateShapeTag() {\n this._updateTag &= UpdateTag.CLEAR_SHAPE;\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode, picker?: IPickerService): boolean {\n if (!picker) {\n return false;\n }\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n x = point.x;\n y = point.y;\n }\n return picker.containsPoint(this, { x, y });\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n\n if (params.background) {\n this.loadImage(params.background, true);\n }\n\n this._setAttributes(params, forceUpdateTag, context);\n }\n\n _setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n this.attribute[key] = params[key];\n }\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (!params) {\n if (!isNil(this.normalAttrs?.[key])) {\n this.normalAttrs[key] = value;\n } else {\n this.attribute[key] = value;\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n }\n } else {\n this._setAttributes(params, forceUpdateTag, context);\n }\n if (key === 'background') {\n this.loadImage(value, true);\n }\n }\n\n protected needUpdateTags(keys: string[], k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return false;\n }\n\n protected needUpdateTag(key: string, k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (key === attrKey) {\n return true;\n }\n }\n return false;\n }\n\n initAttributes(params: T) {\n // this.setAttributes(params, true);\n const context = { type: AttributeUpdateType.INIT };\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n this.attribute = params;\n if (params.background) {\n this.loadImage(params.background, true);\n }\n this._updateTag = UpdateTag.INIT;\n this.onAttributeUpdate(context);\n }\n\n translate(x: number, y: number) {\n if (x === 0 && y === 0) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n x = params.x;\n y = params.y;\n delete params.x;\n delete params.y;\n this._setAttributes(params);\n }\n const attribute = this.attribute;\n const postMatrix = attribute.postMatrix;\n if (!postMatrix) {\n attribute.x = (attribute.x ?? DefaultTransform.x) + x;\n attribute.y = (attribute.y ?? DefaultTransform.y) + y;\n } else {\n application.transformUtil.fromMatrix(postMatrix, postMatrix).translate(x, y);\n }\n\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n translateTo(x: number, y: number) {\n const attribute = this.attribute;\n if (attribute.x === x && attribute.y === y) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.x = x;\n attribute.y = y;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n scale(scaleX: number, scaleY: number, scaleCenter?: IPointLike) {\n if (scaleX === 1 && scaleY === 1) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY, scaleCenter }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n scaleX = params.scaleX;\n scaleY = params.scaleY;\n delete params.scaleX;\n delete params.scaleY;\n this._setAttributes(params);\n }\n const attribute = this.attribute;\n if (!scaleCenter) {\n attribute.scaleX = (attribute.scaleX ?? DefaultTransform.scaleX) * scaleX;\n attribute.scaleY = (attribute.scaleY ?? DefaultTransform.scaleY) * scaleY;\n } else {\n let { postMatrix } = this.attribute;\n if (!postMatrix) {\n postMatrix = new Matrix();\n attribute.postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter);\n }\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n scaleTo(scaleX: number, scaleY: number) {\n const attribute = this.attribute;\n if (attribute.scaleX === scaleX && attribute.scaleY === scaleY) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.scaleX = scaleX;\n attribute.scaleY = scaleY;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n rotate(angle: number, rotateCenter?: IPointLike) {\n if (angle === 0) {\n return this;\n }\n const context = { type: AttributeUpdateType.ROTATE };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ angle, rotateCenter }, this.attribute, tempConstantAngleKey, context);\n if (params) {\n delete params.angle;\n this._setAttributes(params, false, context);\n // return this;\n }\n const attribute = this.attribute;\n if (!rotateCenter) {\n attribute.angle = (attribute.angle ?? DefaultTransform.angle) + angle;\n } else {\n let { postMatrix } = this.attribute;\n if (!postMatrix) {\n postMatrix = new Matrix();\n attribute.postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter);\n }\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n rotateTo(angle: number) {\n const attribute = this.attribute;\n if (attribute.angle === angle) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.ROTATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate(angle, this.attribute, tempConstantAngleKey, context);\n if (params) {\n this._setAttributes(params, false, context);\n return this;\n }\n attribute.angle = angle;\n this.addUpdatePositionTag();\n this.addUpdateBoundTag();\n this.addUpdateLayoutTag();\n this.onAttributeUpdate(context);\n return this;\n }\n\n skewTo(b: number, c: number) {\n return this;\n }\n\n animate(params?: IGraphicAnimateParams) {\n if (!this.animates) {\n this.animates = new Map();\n }\n const animate = new Animate(params?.id).bind(this);\n if (params) {\n const { onStart, onFrame, onEnd, onRemove } = params;\n onStart != null && animate.onStart(onStart);\n onFrame != null && animate.onFrame(onFrame);\n onEnd != null && animate.onEnd(onEnd);\n onRemove != null && animate.onRemove(onRemove);\n animate.interpolateFunc = params.interpolate;\n }\n this.animates.set(animate.id, animate);\n animate.onRemove(() => {\n this.animates.delete(animate.id);\n });\n\n return animate;\n }\n\n onAttributeUpdate(context?: ISetAttributeContext) {\n if (context && context.skipUpdateCallback) {\n return;\n }\n application.graphicService.onAttributeUpdate(this);\n this._emitCustomEvent('afterAttributeUpdate', context);\n }\n\n // hasListener(event: string) {\n // const prefix = this.prefixed;\n // var evt = prefix ? prefix + event : event;\n // return this._events[evt];\n // }\n\n update(d?: { bounds: boolean; trans: boolean }) {\n if (d) {\n d.bounds && this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n d.trans && this.tryUpdateLocalTransMatrix();\n } else {\n this.tryUpdateAABBBounds(this.attribute.boundsMode === 'imprecise');\n this.tryUpdateLocalTransMatrix();\n }\n }\n\n hasState(stateName?: string) {\n if (!this.currentStates || !this.currentStates.length) {\n return false;\n }\n\n if (!isNil(stateName)) {\n return this.currentStates.includes(stateName);\n }\n\n return true;\n }\n getState(stateName: string) {\n return this.states?.[stateName];\n }\n\n applyStateAttrs(attrs: Partial<T>, stateNames: string[], hasAnimation?: boolean, isClear?: boolean) {\n if (hasAnimation) {\n const keys = Object.keys(attrs);\n const noWorkAAttr = this.getNoWorkAnimateAttr();\n const animateAttrs: Partial<T> = {};\n let noAnimateAttrs: Partial<T> | undefined;\n if (isClear) {\n keys.forEach(key => {\n if (!noWorkAAttr[key]) {\n animateAttrs[key] = attrs[key] === undefined ? this.getDefaultAttribute(key) : attrs[key];\n } else {\n if (!noAnimateAttrs) {\n noAnimateAttrs = {};\n }\n noAnimateAttrs[key] = attrs[key];\n }\n });\n } else {\n keys.forEach(key => {\n if (!noWorkAAttr[key]) {\n animateAttrs[key] = attrs[key];\n } else {\n if (!noAnimateAttrs) {\n noAnimateAttrs = {};\n }\n noAnimateAttrs[key] = attrs[key];\n }\n });\n }\n\n const animate = this.animate();\n (animate as any).stateNames = stateNames;\n animate.to(\n animateAttrs,\n this.stateAnimateConfig?.duration ?? DefaultStateAnimateConfig.duration,\n this.stateAnimateConfig?.easing ?? DefaultStateAnimateConfig.easing\n );\n noAnimateAttrs && this.setAttributes(noAnimateAttrs, false, { type: AttributeUpdateType.STATE });\n } else {\n this.setAttributes(attrs, false, { type: AttributeUpdateType.STATE });\n }\n }\n\n updateNormalAttrs(stateAttrs: Partial<T>) {\n const newNormalAttrs = {};\n if (this.normalAttrs) {\n Object.keys(stateAttrs).forEach(key => {\n if (key in this.normalAttrs) {\n newNormalAttrs[key] = this.normalAttrs[key];\n delete this.normalAttrs[key];\n } else {\n newNormalAttrs[key] = this.getNormalAttribute(key);\n }\n });\n Object.keys(this.normalAttrs).forEach(key => {\n stateAttrs[key] = this.normalAttrs[key];\n });\n } else {\n Object.keys(stateAttrs).forEach(key => {\n newNormalAttrs[key] = this.getNormalAttribute(key);\n });\n }\n\n this.normalAttrs = newNormalAttrs;\n }\n\n private getNormalAttribute(key: string) {\n let value = this.attribute[key];\n\n if (this.animates) {\n this.animates.forEach(animate => {\n if ((animate as any).stateNames) {\n const endProps = animate.getEndProps();\n\n if (has(endProps, key)) {\n value = endProps[key];\n }\n }\n });\n }\n\n return value;\n }\n\n clearStates(hasAnimation?: boolean) {\n if (this.hasState() && this.normalAttrs) {\n this.currentStates = [];\n this.applyStateAttrs(this.normalAttrs, this.currentStates, hasAnimation, true);\n } else {\n this.currentStates = [];\n }\n this.normalAttrs = null;\n }\n\n removeState(stateName: string, hasAnimation?: boolean) {\n const index = this.currentStates ? this.currentStates.indexOf(stateName) : -1;\n\n if (index >= 0) {\n const currentStates = this.currentStates.filter(state => state !== stateName);\n\n this.useStates(currentStates, hasAnimation);\n }\n }\n\n toggleState(stateName: string, hasAnimation?: boolean) {\n if (this.hasState(stateName)) {\n this.removeState(stateName, hasAnimation);\n } else {\n const index = this.currentStates ? this.currentStates.indexOf(stateName) : -1;\n if (index < 0) {\n const nextStates = this.currentStates ? this.currentStates.slice() : [];\n nextStates.push(stateName);\n this.useStates(nextStates, hasAnimation);\n }\n }\n }\n\n addState(stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) {\n if (\n this.currentStates &&\n this.currentStates.includes(stateName) &&\n (keepCurrentStates || this.currentStates.length === 1)\n ) {\n return;\n }\n\n const newStates =\n keepCurrentStates && this.currentStates?.length ? this.currentStates.concat([stateName]) : [stateName];\n\n this.useStates(newStates, hasAnimation);\n }\n\n useStates(states: string[], hasAnimation?: boolean) {\n if (!states.length) {\n this.clearStates(hasAnimation);\n return;\n }\n\n const isChange =\n this.currentStates?.length !== states.length ||\n states.some((stateName, index) => this.currentStates[index] !== stateName);\n\n if (!isChange) {\n return;\n }\n\n const stateAttrs = {};\n states.forEach(stateName => {\n const attrs = this.stateProxy ? this.stateProxy(stateName, states) : this.states?.[stateName];\n\n if (attrs) {\n Object.assign(stateAttrs, attrs);\n }\n });\n\n this.updateNormalAttrs(stateAttrs);\n\n this.currentStates = states;\n this.applyStateAttrs(stateAttrs, states, hasAnimation);\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n addUpdateShapeTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE; // for shape\n }\n\n addUpdateShapeAndBoundsTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS; // for shape&bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n protected updateShapeAndBoundsTagSetted(): boolean {\n return (this._updateTag & UpdateTag.UPDATE_SHAPE_AND_BOUNDS) === UpdateTag.UPDATE_SHAPE_AND_BOUNDS;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX;\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_MATRIX;\n }\n /**\n * 清除局部位置tag\n */\n protected clearUpdateLocalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_LOCAL_MATRIX;\n }\n /**\n * 清除全局位置tag\n */\n protected clearUpdateGlobalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_GLOBAL_MATRIX;\n }\n\n addUpdateLayoutTag() {\n this._updateTag |= UpdateTag.UPDATE_LAYOUT;\n }\n\n protected clearUpdateLayoutTag() {\n this._updateTag &= UpdateTag.CLEAR_LAYOUT;\n }\n\n protected needUpdateLayout(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LAYOUT);\n }\n\n protected getAnchor(anchor: [string | number, string | number], params: { b?: IAABBBounds }) {\n const _anchor: [number, number] = [0, 0];\n const getBounds = () => {\n if (params.b) {\n return params.b;\n }\n const { scaleX, scaleY, angle } = this.attribute;\n // 拷贝一份,避免计算bounds的过程中计算matrix,然后matrix又修改了bounds\n tempBounds.copy(this._AABBBounds);\n // @ts-ignore\n this.setAttributes({ scaleX: 1, scaleY: 1, angle: 0 });\n params.b = this.AABBBounds.clone();\n this._AABBBounds.copy(tempBounds);\n // @ts-ignore\n this.setAttributes({ scaleX, scaleY, angle });\n return params.b;\n };\n if (typeof anchor[0] === 'string') {\n const ratio = parseFloat(anchor[0]) / 100;\n const bounds = getBounds();\n _anchor[0] = bounds.x1 + (bounds.x2 - bounds.x1) * ratio;\n } else {\n _anchor[0] = anchor[0];\n }\n if (typeof anchor[1] === 'string') {\n const ratio = parseFloat(anchor[1]) / 100;\n const bounds = getBounds();\n _anchor[1] = bounds.y1 + (bounds.y2 - bounds.y1) * ratio;\n } else {\n _anchor[1] = anchor[1];\n }\n\n return _anchor;\n }\n\n /**\n * 更新局部matrix的具体函数\n */\n protected doUpdateLocalMatrix() {\n const {\n x = DefaultTransform.x,\n y = DefaultTransform.y,\n scaleX = DefaultTransform.scaleX,\n scaleY = DefaultTransform.scaleY,\n angle = DefaultTransform.angle,\n scaleCenter,\n anchor,\n postMatrix\n } = this.attribute;\n let _anchor: [number, number] = [0, 0];\n const params = {};\n if (anchor) {\n _anchor = this.getAnchor(anchor, params);\n }\n if (scaleCenter && (scaleX !== 1 || scaleY !== 1)) {\n const m = this._transMatrix;\n m.reset();\n m.translate(_anchor[0], _anchor[1]);\n m.rotate(angle);\n m.translate(-_anchor[0], -_anchor[1]);\n\n m.translate(x, y);\n // m.translate(scaleCenter[0] * scaleX, scaleCenter[1] * scaleY);\n // 计算bounds\n _anchor = this.getAnchor(scaleCenter, params);\n application.transformUtil.fromMatrix(m, m).scale(scaleX, scaleY, { x: _anchor[0], y: _anchor[1] });\n // m.translate(-scaleCenter[0], -scaleCenter[1]);\n } else {\n normalTransform(this._transMatrix, this._transMatrix.reset(), x, y, scaleX, scaleY, angle, anchor && _anchor);\n }\n const p = this.getOffsetXY(DefaultTransform);\n this._transMatrix.e += p.x;\n this._transMatrix.f += p.y;\n\n if (postMatrix) {\n const m1 = tempMatrix.setValue(\n postMatrix.a,\n postMatrix.b,\n postMatrix.c,\n postMatrix.d,\n postMatrix.e,\n postMatrix.f\n );\n const m2 = this._transMatrix;\n m1.multiply(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f);\n m2.setValue(m1.a, m1.b, m1.c, m1.d, m1.e, m1.f);\n }\n }\n /**\n * 更新全局matrix的具体函数\n */\n protected doUpdateGlobalMatrix() {\n // 基于parent的matrix修改\n if (this.parent) {\n this._globalTransMatrix.multiply(\n this.transMatrix.a,\n this.transMatrix.b,\n this.transMatrix.c,\n this.transMatrix.d,\n this.transMatrix.e,\n this.transMatrix.f\n );\n const { scrollX = 0, scrollY = 0 } = this.parent.attribute;\n this._globalTransMatrix.translate(scrollX, scrollY);\n }\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n if (this.stage !== stage) {\n this.stage = stage;\n this.layer = layer;\n this.setStageToShadowRoot(stage, layer);\n if (this.animates && this.animates.size) {\n const timeline = stage.getTimeline();\n this.animates.forEach(a => {\n a.setTimeline(timeline);\n });\n }\n this._onSetStage && this._onSetStage(this, stage, layer);\n application.graphicService.onSetStage(this, stage);\n }\n }\n\n setStageToShadowRoot(stage?: IStage, layer?: ILayer) {\n if (this.shadowRoot) {\n this.shadowRoot.setStage(stage, layer);\n }\n }\n\n onAddStep(step: IStep) {\n return;\n }\n onStop(props?: Partial<T>): void {\n if (props) {\n this.setAttributes(props, false, { type: AttributeUpdateType.ANIMATE_END });\n }\n }\n // step时调用\n onStep(subAnimate: ISubAnimate, animate: IAnimate, step: IStep, ratio: number, end: boolean) {\n const nextAttributes = {};\n if (step.customAnimate) {\n step.customAnimate.update(end, ratio, nextAttributes);\n } else {\n const nextProps = step.props;\n const nextParsedProps = step.parsedProps;\n const propKeys = step.propKeys;\n this.stepInterpolate(\n subAnimate,\n animate,\n nextAttributes,\n step,\n ratio,\n end,\n nextProps,\n undefined,\n nextParsedProps,\n propKeys\n );\n }\n this.setAttributes(nextAttributes, false, {\n type: AttributeUpdateType.ANIMATE_UPDATE,\n animationState: {\n ratio,\n end,\n step,\n isFirstFrameOfStep: subAnimate.getLastStep() !== step\n }\n });\n this.stage && this.stage.renderNextFrame();\n }\n\n stepInterpolate(\n subAnimate: ISubAnimate,\n animate: IAnimate,\n nextAttributes: Record<string, any>,\n step: IStep,\n ratio: number,\n end: boolean,\n nextProps: Record<string, any>,\n lastProps?: Record<string, any>,\n nextParsedProps?: any,\n propKeys?: string[]\n ) {\n if (!propKeys) {\n propKeys = Object.keys(nextProps);\n step.propKeys = propKeys;\n }\n if (end) {\n step.propKeys.forEach(key => {\n if (!animate.validAttr(key)) {\n return;\n }\n nextAttributes[key] = nextProps[key];\n });\n } else {\n propKeys.forEach(key => {\n // 如果属性不合法,那直接return\n if (!animate.validAttr(key)) {\n return;\n }\n const nextStepVal = nextProps[key];\n const lastStepVal = (lastProps && lastProps[key]) ?? subAnimate.getLastPropByName(key, step);\n let match: boolean;\n match =\n animate.interpolateFunc && animate.interpolateFunc(key, ratio, lastStepVal, nextStepVal, nextAttributes);\n if (match) {\n return;\n }\n match = animate.customInterpolate(key, ratio, lastStepVal, nextStepVal, this, nextAttributes);\n if (match) {\n return;\n }\n if (!this.defaultInterpolate(nextStepVal, lastStepVal, key, nextAttributes, nextParsedProps, ratio)) {\n this._interpolate(key, ratio, lastStepVal, nextStepVal, nextAttributes);\n }\n });\n }\n\n step.parsedProps = nextParsedProps;\n }\n\n defaultInterpolate(\n nextStepVal: any,\n lastStepVal: any,\n key: string,\n nextAttributes: Record<string, any>,\n nextParsedProps: any,\n ratio: number\n ) {\n if (Number.isFinite(nextStepVal)) {\n nextAttributes[key] = lastStepVal + (nextStepVal - lastStepVal) * ratio;\n return true;\n } else if (key === 'fill') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const fillColorArray: [number, number, number, number] = nextParsedProps.fillColorArray;\n const color = interpolateColor(lastStepVal, fillColorArray ?? nextStepVal, ratio, false, (fArray, tArray) => {\n nextParsedProps.fillColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n return true;\n } else if (key === 'stroke') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const strokeColorArray: [number, number, number, number] = nextParsedProps.strokeColorArray;\n const color = interpolateColor(lastStepVal, strokeColorArray ?? nextStepVal, ratio, false, (fArray, tArray) => {\n nextParsedProps.strokeColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n return true;\n } else if (key === 'shadowColor') {\n if (!nextParsedProps) {\n nextParsedProps = {};\n }\n // 保存解析的结果到step\n const shadowColorArray: [number, number, number, number] = nextParsedProps.shadowColorArray;\n const color = interpolateColor(lastStepVal, shadowColorArray ?? nextStepVal, ratio, true, (fArray, tArray) => {\n nextParsedProps.shadowColorArray = tArray;\n });\n if (color) {\n nextAttributes[key] = color;\n }\n\n return true;\n }\n\n return false;\n }\n\n protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any) {\n return;\n }\n\n getDefaultAttribute(name: string) {\n return getTheme(this as any)[this.type][name];\n }\n\n // 获取属性\n getComputedAttribute(name: string) {\n return this.attribute[name] ?? this.getDefaultAttribute(name);\n }\n /**\n * 添加onSetStage钩子\n * @param cb 回调函数\n * @param immediate 是否立刻执行,如果在回调添加之前stage就已经绑定,那么如果第二个参数为true就立刻执行回调\n */\n onSetStage(cb: (g: IGraphic, stage: IStage) => void, immediate: boolean = false) {\n this._onSetStage = cb;\n if (immediate && this.stage) {\n cb(this, this.stage);\n }\n }\n\n /******************** shadow graphic *********************/\n attachShadow(shadowRoot?: IShadowRoot) {\n if (shadowRoot) {\n shadowRoot.shadowHost = this;\n }\n\n this.shadowRoot = shadowRoot ?? application.graphicService.creator.shadowRoot(this);\n this.addUpdateBoundTag();\n this.shadowRoot.setStage(this.stage, this.layer);\n return this.shadowRoot;\n }\n\n detachShadow() {\n if (this.shadowRoot) {\n this.addUpdateBoundTag();\n this.shadowRoot = null;\n }\n }\n\n toJson(): IGraphicJson {\n return {\n attribute: this.attribute,\n _uid: this._uid,\n type: this.type,\n name: this.name,\n children: this.children.map((item: IGraphic) => item.toJson())\n };\n }\n\n createPathProxy(path?: string) {\n if (isString(path, true)) {\n this.pathProxy = new CustomPath2D().fromString(path as string);\n } else {\n this.pathProxy = new CustomPath2D();\n }\n\n return this.pathProxy;\n }\n\n loadImage(image: any, background: boolean = false) {\n if (!image || (background && backgroundNotImage(image))) {\n return;\n }\n const url = image;\n if (!this.resources) {\n this.resources = new Map();\n }\n const cache: {\n state: 'loading' | 'success' | 'init' | 'fail';\n data: any;\n } = {\n data: 'init',\n state: null\n };\n this.resources.set(url, cache);\n if (typeof image === 'string') {\n cache.state = 'loading';\n if (image.startsWith('<svg')) {\n // TODO 封装isSvg到@visactor/vutils\n ResourceLoader.GetSvg(image, this);\n this.backgroundImg = this.backgroundImg || background;\n } else if (isValidUrl(image) || image.includes('/') || isBase64(image)) {\n ResourceLoader.GetImage(image, this);\n this.backgroundImg = this.backgroundImg || background;\n }\n } else {\n (cache.state = 'success'), (cache.data = image);\n this.backgroundImg = this.backgroundImg || background;\n }\n }\n\n imageLoadSuccess(url: string, image: HTMLImageElement, cb?: () => void) {\n // 更新属性\n // this.resourceState = 'success';\n // this.resource = image;\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'success';\n res.data = image;\n\n cb && cb();\n\n // 触发重绘\n // 暂时全量,TODO 启动局部重绘\n // this.stage.enableDirtyBounds();\n // this.stage.dirty(this.AABBBounds);\n this.addUpdateBoundTag(); // 添加bounds更新tag重绘才会绘制这个mark\n this.stage && this.stage.renderNextFrame();\n }\n\n imageLoadFail(url: string, cb?: () => void) {\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'fail';\n\n cb && cb();\n }\n\n private _stopAnimates(animates: Map<string | number, IAnimate>) {\n if (animates) {\n animates.forEach(animate => {\n animate.stop();\n });\n }\n }\n\n stopAnimates(stopChildren: boolean = false) {\n this._stopAnimates(this.animates);\n\n if (this.shadowRoot) {\n // 停止所有影子节点的动画\n this.shadowRoot.stopAnimates(true);\n }\n if (this.isContainer && stopChildren) {\n this.forEachChildren((c: IGraphic) => {\n c.stopAnimates(stopChildren);\n });\n }\n }\n\n release(): void {\n this.releaseStatus = 'released';\n application.graphicService.onRelease(this);\n }\n\n protected _emitCustomEvent(type: string, context?: any) {\n if (this._events && type in this._events) {\n const changeEvent = new CustomEvent(type, context);\n changeEvent.bubbles = false;\n\n (changeEvent as any).manager = (this.stage as any)?.eventSystem?.manager;\n this.dispatchEvent(changeEvent);\n }\n }\n\n abstract getNoWorkAnimateAttr(): Record<string, number>;\n\n abstract clone(): Graphic<any>;\n}\n\nGraphic.mixin(EventTarget);\n\nfunction backgroundNotImage(image: any) {\n if (image.fill || image.stroke) {\n return true;\n }\n return false;\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -11366,11 +11366,13 @@
|
|
|
11366
11366
|
];
|
|
11367
11367
|
const GRAPHIC_UPDATE_TAG_KEY = [
|
|
11368
11368
|
'lineWidth',
|
|
11369
|
+
'lineCap',
|
|
11370
|
+
'lineJoin',
|
|
11371
|
+
'miterLimit',
|
|
11369
11372
|
'scaleX',
|
|
11370
11373
|
'scaleY',
|
|
11371
11374
|
'angle',
|
|
11372
|
-
'anchor'
|
|
11373
|
-
'visible'
|
|
11375
|
+
'anchor'
|
|
11374
11376
|
];
|
|
11375
11377
|
const tempConstantXYKey = ['x', 'y'];
|
|
11376
11378
|
const tempConstantScaleXYKey = ['scaleX', 'scaleY'];
|
|
@@ -18609,9 +18611,6 @@
|
|
|
18609
18611
|
return true;
|
|
18610
18612
|
}
|
|
18611
18613
|
updateRectAABBBounds(attribute, rectTheme, aabbBounds, graphic) {
|
|
18612
|
-
if (!this._validCheck(attribute, rectTheme, aabbBounds, graphic)) {
|
|
18613
|
-
return aabbBounds;
|
|
18614
|
-
}
|
|
18615
18614
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18616
18615
|
const { width = rectTheme.width, height = rectTheme.height } = attribute;
|
|
18617
18616
|
aabbBounds.set(0, 0, width, height);
|
|
@@ -18655,18 +18654,12 @@
|
|
|
18655
18654
|
return aabbBounds;
|
|
18656
18655
|
}
|
|
18657
18656
|
updateGlyphAABBBounds(attribute, theme, aabbBounds, graphic) {
|
|
18658
|
-
if (!this._validCheck(attribute, theme, aabbBounds, graphic)) {
|
|
18659
|
-
return aabbBounds;
|
|
18660
|
-
}
|
|
18661
18657
|
graphic.getSubGraphic().forEach((node) => {
|
|
18662
18658
|
aabbBounds.union(node.AABBBounds);
|
|
18663
18659
|
});
|
|
18664
18660
|
return aabbBounds;
|
|
18665
18661
|
}
|
|
18666
18662
|
updateRichTextAABBBounds(attribute, richtextTheme, aabbBounds, graphic) {
|
|
18667
|
-
if (!this._validCheck(attribute, richtextTheme, aabbBounds, graphic)) {
|
|
18668
|
-
return aabbBounds;
|
|
18669
|
-
}
|
|
18670
18663
|
if (!graphic) {
|
|
18671
18664
|
return aabbBounds;
|
|
18672
18665
|
}
|
|
@@ -18716,9 +18709,6 @@
|
|
|
18716
18709
|
return aabbBounds;
|
|
18717
18710
|
}
|
|
18718
18711
|
updateTextAABBBounds(attribute, textTheme, aabbBounds, graphic) {
|
|
18719
|
-
if (!this._validCheck(attribute, textTheme, aabbBounds, graphic)) {
|
|
18720
|
-
return aabbBounds;
|
|
18721
|
-
}
|
|
18722
18712
|
if (!graphic) {
|
|
18723
18713
|
return aabbBounds;
|
|
18724
18714
|
}
|
|
@@ -18744,9 +18734,6 @@
|
|
|
18744
18734
|
return aabbBounds;
|
|
18745
18735
|
}
|
|
18746
18736
|
updatePathAABBBounds(attribute, pathTheme, aabbBounds, graphic) {
|
|
18747
|
-
if (!this._validCheck(attribute, pathTheme, aabbBounds, graphic)) {
|
|
18748
|
-
return aabbBounds;
|
|
18749
|
-
}
|
|
18750
18737
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18751
18738
|
this.updatePathAABBBoundsImprecise(attribute, pathTheme, aabbBounds, graphic);
|
|
18752
18739
|
}
|
|
@@ -18815,9 +18802,6 @@
|
|
|
18815
18802
|
return aabbBounds;
|
|
18816
18803
|
}
|
|
18817
18804
|
updatePolygonAABBBounds(attribute, polygonTheme, aabbBounds, graphic) {
|
|
18818
|
-
if (!this._validCheck(attribute, polygonTheme, aabbBounds, graphic)) {
|
|
18819
|
-
return aabbBounds;
|
|
18820
|
-
}
|
|
18821
18805
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18822
18806
|
this.updatePolygonAABBBoundsImprecise(attribute, polygonTheme, aabbBounds, graphic);
|
|
18823
18807
|
}
|
|
@@ -18837,9 +18821,6 @@
|
|
|
18837
18821
|
return aabbBounds;
|
|
18838
18822
|
}
|
|
18839
18823
|
updateLineAABBBounds(attribute, lineTheme, aabbBounds, graphic) {
|
|
18840
|
-
if (!this._validCheck(attribute, lineTheme, aabbBounds, graphic)) {
|
|
18841
|
-
return aabbBounds;
|
|
18842
|
-
}
|
|
18843
18824
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18844
18825
|
attribute.segments
|
|
18845
18826
|
? this.updateLineAABBBoundsBySegments(attribute, lineTheme, aabbBounds, graphic)
|
|
@@ -18872,9 +18853,6 @@
|
|
|
18872
18853
|
return b;
|
|
18873
18854
|
}
|
|
18874
18855
|
updateAreaAABBBounds(attribute, areaTheme, aabbBounds, graphic) {
|
|
18875
|
-
if (!this._validCheck(attribute, areaTheme, aabbBounds, graphic)) {
|
|
18876
|
-
return aabbBounds;
|
|
18877
|
-
}
|
|
18878
18856
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18879
18857
|
attribute.segments
|
|
18880
18858
|
? this.updateAreaAABBBoundsBySegments(attribute, areaTheme, aabbBounds, graphic)
|
|
@@ -18911,9 +18889,6 @@
|
|
|
18911
18889
|
return b;
|
|
18912
18890
|
}
|
|
18913
18891
|
updateCircleAABBBounds(attribute, circleTheme, aabbBounds, full, graphic) {
|
|
18914
|
-
if (!this._validCheck(attribute, circleTheme, aabbBounds, graphic)) {
|
|
18915
|
-
return aabbBounds;
|
|
18916
|
-
}
|
|
18917
18892
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18918
18893
|
full
|
|
18919
18894
|
? this.updateCircleAABBBoundsImprecise(attribute, circleTheme, aabbBounds, graphic)
|
|
@@ -18951,9 +18926,6 @@
|
|
|
18951
18926
|
return aabbBounds;
|
|
18952
18927
|
}
|
|
18953
18928
|
updateArcAABBBounds(attribute, arcTheme, aabbBounds, full, graphic) {
|
|
18954
|
-
if (!this._validCheck(attribute, arcTheme, aabbBounds, graphic)) {
|
|
18955
|
-
return aabbBounds;
|
|
18956
|
-
}
|
|
18957
18929
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
18958
18930
|
full
|
|
18959
18931
|
? this.updateArcAABBBoundsImprecise(attribute, arcTheme, aabbBounds, graphic)
|
|
@@ -19007,9 +18979,6 @@
|
|
|
19007
18979
|
return aabbBounds;
|
|
19008
18980
|
}
|
|
19009
18981
|
updateSymbolAABBBounds(attribute, symbolTheme, aabbBounds, full, graphic) {
|
|
19010
|
-
if (!this._validCheck(attribute, symbolTheme, aabbBounds, graphic)) {
|
|
19011
|
-
return aabbBounds;
|
|
19012
|
-
}
|
|
19013
18982
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
19014
18983
|
full
|
|
19015
18984
|
? this.updateSymbolAABBBoundsImprecise(attribute, symbolTheme, aabbBounds, graphic)
|
|
@@ -19053,9 +19022,6 @@
|
|
|
19053
19022
|
return aabbBounds;
|
|
19054
19023
|
}
|
|
19055
19024
|
updateImageAABBBounds(attribute, imageTheme, aabbBounds, graphic) {
|
|
19056
|
-
if (!this._validCheck(attribute, imageTheme, aabbBounds, graphic)) {
|
|
19057
|
-
return aabbBounds;
|
|
19058
|
-
}
|
|
19059
19025
|
if (!this.updatePathProxyAABBBounds(aabbBounds, graphic)) {
|
|
19060
19026
|
const { width = imageTheme.width, height = imageTheme.height } = attribute;
|
|
19061
19027
|
aabbBounds.set(0, 0, width, height);
|
|
@@ -19091,21 +19057,6 @@
|
|
|
19091
19057
|
this.combindShadowAABBBounds(aabbBounds, graphic);
|
|
19092
19058
|
vutils.transformBoundsWithMatrix(aabbBounds, aabbBounds, graphic.transMatrix);
|
|
19093
19059
|
}
|
|
19094
|
-
_validCheck(attribute, theme, aabbBounds, graphic) {
|
|
19095
|
-
if (!graphic) {
|
|
19096
|
-
return true;
|
|
19097
|
-
}
|
|
19098
|
-
if (!graphic.valid) {
|
|
19099
|
-
aabbBounds.clear();
|
|
19100
|
-
return false;
|
|
19101
|
-
}
|
|
19102
|
-
const { visible = theme.visible } = attribute;
|
|
19103
|
-
if (!visible) {
|
|
19104
|
-
aabbBounds.clear();
|
|
19105
|
-
return false;
|
|
19106
|
-
}
|
|
19107
|
-
return true;
|
|
19108
|
-
}
|
|
19109
19060
|
};
|
|
19110
19061
|
exports.DefaultGraphicService = __decorate([
|
|
19111
19062
|
injectable(),
|