@visactor/vrender-kits 0.20.14 → 0.20.16
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/contributions/browser/context.js +2 -2
- package/cjs/canvas/contributions/browser/context.js.map +1 -1
- package/cjs/canvas/contributions/harmony/context.js +2 -2
- package/cjs/canvas/contributions/harmony/context.js.map +1 -1
- package/cjs/canvas/contributions/lynx/context.js +2 -2
- package/cjs/canvas/contributions/lynx/context.js.map +1 -1
- package/cjs/canvas/contributions/taro/context.js +5 -5
- package/cjs/canvas/contributions/taro/context.js.map +1 -1
- package/cjs/env/contributions/browser-contribution.js +1 -2
- package/cjs/env/contributions/lynx-contribution.js +2 -1
- package/cjs/env/contributions/tt-contribution.js +1 -1
- package/cjs/env/contributions/wx-contribution.js +1 -1
- package/cjs/event/extension/gesture.js +1 -1
- package/cjs/event/extension/gesture.js.map +1 -1
- package/cjs/event/extension/index.js +1 -1
- package/cjs/event/extension/interface.js +1 -1
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js +3 -2
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/cjs/picker/contributions/common/base-line-picker.js +3 -2
- package/cjs/picker/contributions/common/base-line-picker.js.map +1 -1
- package/cjs/picker/contributions/common/base.js +3 -2
- package/cjs/picker/contributions/common/base.js.map +1 -1
- package/cjs/picker/contributions/common/picker-utils.js +3 -2
- package/cjs/picker/contributions/common/picker-utils.js.map +1 -1
- package/cjs/picker/contributions/common/rect-picker-base.js +3 -2
- package/cjs/picker/contributions/common/rect-picker-base.js.map +1 -1
- package/dist/index.es.js +25 -13
- package/es/canvas/contributions/browser/context.js +4 -4
- package/es/canvas/contributions/browser/context.js.map +1 -1
- package/es/canvas/contributions/harmony/context.js +2 -2
- package/es/canvas/contributions/harmony/context.js.map +1 -1
- package/es/canvas/contributions/lynx/context.js +2 -2
- package/es/canvas/contributions/lynx/context.js.map +1 -1
- package/es/canvas/contributions/taro/context.js +2 -2
- package/es/canvas/contributions/taro/context.js.map +1 -1
- package/es/env/contributions/browser-contribution.js +1 -2
- package/es/env/contributions/lynx-contribution.js +2 -1
- package/es/env/contributions/tt-contribution.js +1 -1
- package/es/env/contributions/wx-contribution.js +1 -1
- package/es/event/extension/gesture.js +1 -1
- package/es/event/extension/gesture.js.map +1 -1
- package/es/event/extension/index.js +1 -1
- package/es/event/extension/interface.js +1 -1
- package/es/picker/contributions/canvas-picker/symbol-picker.js +2 -2
- package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/es/picker/contributions/common/base-line-picker.js +2 -2
- package/es/picker/contributions/common/base-line-picker.js.map +1 -1
- package/es/picker/contributions/common/base.js +2 -2
- package/es/picker/contributions/common/base.js.map +1 -1
- package/es/picker/contributions/common/picker-utils.js +2 -2
- package/es/picker/contributions/common/picker-utils.js.map +1 -1
- package/es/picker/contributions/common/rect-picker-base.js +2 -2
- package/es/picker/contributions/common/rect-picker-base.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/extension/gesture.ts"],"names":[],"mappings":"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","file":"gesture.js","sourcesContent":["import { application, clock, WILDCARD } from '@visactor/vrender-core';\nimport type { IEventTarget, IFederatedPointerEvent, FederatedPointerEvent, INode } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport { EventEmitter } from '@visactor/vutils';\n\nimport type { DefaultGestureConfig, EmitEventObject, GestureConfig, GestureDirection, GestureEvent } from './interface';\n\n/**\n * 代码参考 https://github.com/hammerjs/hammer.js\n * The MIT License (MIT)\n\n Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\nconst PRESS_TIME = 251;\nconst PRESS_THRESHOLD = 9;\nconst SWIPE_VELOCITY = 0.3;\nconst SWIPE_THRESHOLD = 10;\nconst TAP_INTERVAL = 300;\n\nconst calcDirection = (start: IPointLike, end: IPointLike) => {\n const xDistance = end.x - start.x;\n const yDistance = end.y - start.y;\n if (Math.abs(xDistance) > Math.abs(yDistance)) {\n return xDistance > 0 ? 'right' : 'left';\n }\n return yDistance > 0 ? 'down' : 'up';\n};\n\n// 计算2点之间的距离\nconst calcDistance = (point1: IPointLike, point2: IPointLike) => {\n const xDistance = Math.abs(point2.x - point1.x);\n const yDistance = Math.abs(point2.y - point1.y);\n return Math.sqrt(xDistance * xDistance + yDistance * yDistance);\n};\n\nconst getCenter = (points: IPointLike[]) => {\n const pointersLength = points.length;\n\n if (pointersLength === 1) {\n return {\n x: Math.round(points[0].x),\n y: Math.round(points[0].y)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += points[i].x;\n y += points[i].y;\n i++;\n }\n\n return {\n x: Math.round(x / pointersLength),\n y: Math.round(y / pointersLength)\n };\n};\n\nexport class Gesture extends EventEmitter {\n element: INode | null;\n\n private cachedEvents: IFederatedPointerEvent[] = [];\n private startTime: number;\n // @ts-ignore\n // eslint-disable-next-line no-undef\n private pressTimeout: NodeJS.Timeout | null;\n private startPoints: IPointLike[] = [];\n // 用来记录当前触发的事件\n private processEvent: Record<string, boolean> = {};\n private startDistance: number;\n private center: IPointLike;\n private eventType: string | null;\n private direction: GestureDirection | null;\n\n private lastMoveTime: number;\n private prevMoveTime: number;\n\n private prevMovePoint: IPointLike | null;\n private lastMovePoint: IPointLike | null;\n\n private throttleTimer: number = 0;\n private emitThrottles: EmitEventObject[] = [];\n\n private config: DefaultGestureConfig;\n\n private tapCount;\n private lastTapTime;\n private lastTapTarget: IEventTarget | null = null;\n\n constructor(element: IEventTarget, config: GestureConfig = {}) {\n super();\n this.element = element;\n this.tapCount = 0;\n this.lastTapTime = 0;\n this.config = {\n press: {\n time: config?.press?.time ?? PRESS_TIME,\n threshold: config?.press?.threshold ?? PRESS_THRESHOLD\n },\n swipe: {\n threshold: config?.swipe?.threshold ?? SWIPE_THRESHOLD,\n velocity: config?.swipe?.velocity ?? SWIPE_VELOCITY\n },\n tap: {\n interval: config?.tap?.interval ?? TAP_INTERVAL\n }\n };\n this.initEvents();\n }\n\n initEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n\n element.addEventListener('pointerdown', this.onStart);\n element.addEventListener('pointermove', this.onMove);\n element.addEventListener('pointerup', this.onEnd);\n element.addEventListener('pointerupoutside', this.onEnd);\n }\n\n removeEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n element.removeEventListener('pointerdown', this.onStart);\n element.removeEventListener('pointermove', this.onMove);\n element.removeEventListener('pointerup', this.onEnd);\n element.removeEventListener('pointerupoutside', this.onEnd);\n }\n\n release() {\n this.removeEvents();\n this.element = null;\n }\n\n private onStart = (ev?: FederatedPointerEvent) => {\n this.cachedEvents = [];\n this.startPoints = [];\n this.reset();\n\n this.startTime = clock.now();\n\n const { cachedEvents, startPoints } = this;\n\n if (ev) {\n cachedEvents.push(ev.clone());\n }\n // 重置 startPoints\n startPoints.length = cachedEvents.length;\n for (let i = 0; i < cachedEvents.length; i++) {\n const { x, y } = cachedEvents[i];\n const point = { x, y };\n startPoints[i] = point;\n }\n\n if (startPoints.length === 1) {\n const event = cachedEvents[0] as unknown as GestureEvent;\n this.pressTimeout = setTimeout(() => {\n const eventType = 'press';\n const direction = 'none';\n event.direction = direction;\n event.deltaX = 0;\n event.deltaY = 0;\n event.points = startPoints;\n this.triggerStartEvent(eventType, event);\n this.triggerEvent(eventType, event);\n this.eventType = eventType;\n this.direction = direction;\n this.pressTimeout = null;\n }, this.config.press.time);\n return;\n }\n\n this.startDistance = calcDistance(startPoints[0], startPoints[1]);\n this.center = getCenter([startPoints[0], startPoints[1]]);\n };\n\n private onMove = (ev: FederatedPointerEvent) => {\n this.clearPressTimeout();\n const { startPoints, cachedEvents } = this;\n if (!startPoints.length) {\n return;\n }\n\n const moveEvent = ev.clone() as unknown as GestureEvent;\n const { x, y, pointerId } = moveEvent;\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (pointerId === cachedEvents[i].pointerId) {\n cachedEvents[i] = moveEvent;\n break;\n }\n }\n const point = { x, y };\n const points = cachedEvents.map(cachedEvent => ({ x: cachedEvent.x, y: cachedEvent.y }));\n\n const now = clock.now();\n this.prevMoveTime = this.lastMoveTime;\n this.prevMovePoint = this.lastMovePoint;\n this.lastMoveTime = now;\n this.lastMovePoint = point;\n\n if (startPoints.length === 1) {\n const startPoint = startPoints[0];\n const deltaX = x - startPoint.x;\n const deltaY = y - startPoint.y;\n const direction = this.direction || calcDirection(startPoint, point);\n this.direction = direction;\n\n const eventType = this.getEventType(point);\n moveEvent.direction = direction;\n moveEvent.deltaX = deltaX;\n moveEvent.deltaY = deltaY;\n moveEvent.points = points;\n this.triggerStartEvent(eventType, moveEvent);\n this.triggerEvent(eventType, moveEvent);\n return;\n }\n\n const { startDistance } = this;\n const currentDistance = calcDistance(points[0], points[1]);\n\n // 缩放比例\n moveEvent.scale = currentDistance / startDistance;\n moveEvent.center = this.center;\n moveEvent.points = points;\n this.triggerStartEvent('pinch', moveEvent);\n this.triggerEvent('pinch', moveEvent);\n };\n\n private onEnd = (ev: FederatedPointerEvent) => {\n const endEvent = ev.clone() as unknown as GestureEvent;\n const { cachedEvents, startPoints } = this;\n const points = cachedEvents.map(ev => {\n return { x: ev.x, y: ev.y };\n });\n endEvent.points = points;\n this.triggerEndEvent(endEvent);\n\n if (cachedEvents.length === 1) {\n const now = clock.now();\n const lastMoveTime = this.lastMoveTime;\n // 做这个判断是为了最后一次touchmove后到end前,是否还有一个停顿的过程\n // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内\n if (now - lastMoveTime < 100) {\n const prevMoveTime = this.prevMoveTime || this.startTime;\n const intervalTime = lastMoveTime - prevMoveTime;\n // 时间间隔一定要大于0, 否则计算没意义\n if (intervalTime > 0) {\n const prevMovePoint = this.prevMovePoint || startPoints[0];\n const lastMovePoint = this.lastMovePoint || startPoints[0];\n const distance = calcDistance(prevMovePoint, lastMovePoint);\n // move速率\n const velocity = distance / intervalTime;\n // 0.3 是参考hammerjs的设置\n if (velocity > this.config.swipe.velocity && distance > this.config.swipe.threshold) {\n endEvent.velocity = velocity;\n endEvent.direction = calcDirection(prevMovePoint, lastMovePoint);\n this.triggerEvent('swipe', endEvent);\n\n this.cachedEvents = [];\n this.startPoints = [];\n this.reset();\n return;\n }\n }\n }\n\n if (now - this.startTime < this.config.press.time) {\n if (now - this.lastTapTime < this.config.tap.interval && ev.target === this.lastTapTarget) {\n this.tapCount++;\n } else {\n this.tapCount = 1;\n }\n this.lastTapTime = now;\n this.lastTapTarget = ev.target;\n\n if (this.tapCount === 1) {\n this.triggerEvent('tap', endEvent);\n } else if (this.tapCount === 2) {\n this.triggerEvent('doubletap', endEvent);\n this.tapCount = 0; // reset tapCount after doubletap\n }\n }\n }\n\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (cachedEvents[i].pointerId === endEvent.pointerId) {\n cachedEvents.splice(i, 1);\n startPoints.splice(i, 1);\n break;\n }\n }\n\n this.reset();\n\n // 多指离开 1 指后,重新触发一次start\n if (cachedEvents.length > 0) {\n this.onStart();\n }\n };\n\n private getEventType(point: IPointLike) {\n const { eventType, startTime, startPoints } = this;\n if (eventType) {\n return eventType;\n }\n let type;\n const now = clock.now();\n if (now - startTime > this.config.press.time && calcDistance(startPoints[0], point) < this.config.press.threshold) {\n type = 'press';\n } else {\n type = 'pan';\n }\n this.eventType = type;\n return type;\n }\n\n private enable(eventType: string) {\n this.processEvent[eventType] = true;\n }\n\n // 是否进行中的事件\n private isProcess(eventType: string) {\n return this.processEvent[eventType];\n }\n\n private pushEvent(type: string, ev: GestureEvent) {\n const { emitThrottles } = this;\n const newEvent = { type, ev };\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n if (emitThrottles[i].type === type) {\n emitThrottles.splice(i, 1, newEvent);\n return;\n }\n }\n emitThrottles.push(newEvent);\n }\n\n private clearPressTimeout() {\n if (this.pressTimeout) {\n clearTimeout(this.pressTimeout);\n this.pressTimeout = null;\n }\n }\n\n private reset() {\n this.clearPressTimeout();\n this.startTime = 0;\n this.startDistance = 0;\n this.direction = null;\n this.eventType = null;\n this.prevMoveTime = 0;\n this.prevMovePoint = null;\n this.lastMoveTime = 0;\n this.lastMovePoint = null;\n }\n\n private triggerEvent(type: string, ev: GestureEvent) {\n // 主要是节流处理\n this.pushEvent(type, ev);\n const { throttleTimer, emitThrottles } = this;\n if (throttleTimer) {\n return;\n }\n\n this.throttleTimer = application.global.getRequestAnimationFrame()(() => {\n application.global.getCancelAnimationFrame()(this.throttleTimer);\n this.throttleTimer = null;\n\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n const { type, ev } = emitThrottles[i];\n this.emitEvent(type, ev);\n }\n // 清空\n this.emitThrottles.length = 0;\n });\n }\n\n // 触发start事件\n private triggerStartEvent(type: string, ev: GestureEvent) {\n if (this.isProcess(type)) {\n return;\n }\n this.enable(type);\n this.triggerEvent(`${type}start`, ev);\n }\n\n private triggerEndEvent(ev: GestureEvent) {\n const processEvent = this.processEvent;\n Object.keys(processEvent).forEach(type => {\n this.triggerEvent(`${type}end`, ev);\n if (type === 'press') {\n // pressend 别名,pressup\n this.triggerEvent(`${type}up`, ev);\n }\n delete processEvent[type];\n });\n }\n\n private emitEvent(type: string, e: GestureEvent) {\n const events = (this.element as unknown as any)._events;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n\n this.emit(type, e);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/event/extension/gesture.ts"],"names":[],"mappings":"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","file":"gesture.js","sourcesContent":["import { application, clock, WILDCARD } from '@visactor/vrender-core';\nimport type { IEventTarget, IFederatedPointerEvent, FederatedPointerEvent, INode } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport { EventEmitter } from '@visactor/vutils';\n\nimport type { DefaultGestureConfig, EmitEventObject, GestureConfig, GestureDirection, GestureEvent } from './interface';\n\n/**\n * 代码参考 https://github.com/hammerjs/hammer.js\n * The MIT License (MIT)\n\n Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\nconst PRESS_TIME = 251;\nconst PRESS_THRESHOLD = 9;\nconst SWIPE_VELOCITY = 0.3;\nconst SWIPE_THRESHOLD = 10;\nconst TAP_INTERVAL = 300;\n\nconst calcDirection = (start: IPointLike, end: IPointLike) => {\n const xDistance = end.x - start.x;\n const yDistance = end.y - start.y;\n if (Math.abs(xDistance) > Math.abs(yDistance)) {\n return xDistance > 0 ? 'right' : 'left';\n }\n return yDistance > 0 ? 'down' : 'up';\n};\n\n// 计算2点之间的距离\nconst calcDistance = (point1: IPointLike, point2: IPointLike) => {\n const xDistance = Math.abs(point2.x - point1.x);\n const yDistance = Math.abs(point2.y - point1.y);\n return Math.sqrt(xDistance * xDistance + yDistance * yDistance);\n};\n\nconst getCenter = (points: IPointLike[]) => {\n const pointersLength = points.length;\n\n if (pointersLength === 1) {\n return {\n x: Math.round(points[0].x),\n y: Math.round(points[0].y)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += points[i].x;\n y += points[i].y;\n i++;\n }\n\n return {\n x: Math.round(x / pointersLength),\n y: Math.round(y / pointersLength)\n };\n};\n\nexport class Gesture extends EventEmitter {\n element: INode | null;\n\n private cachedEvents: IFederatedPointerEvent[] = [];\n private startTime: number;\n // @ts-ignore\n // eslint-disable-next-line no-undef\n private pressTimeout: NodeJS.Timeout | null;\n private startPoints: IPointLike[] = [];\n // 用来记录当前触发的事件\n private processEvent: Record<string, boolean> = {};\n private startDistance: number;\n private center: IPointLike;\n private eventType: string | null;\n private direction: GestureDirection | null;\n\n private lastMoveTime: number;\n private prevMoveTime: number;\n\n private prevMovePoint: IPointLike | null;\n private lastMovePoint: IPointLike | null;\n\n private throttleTimer: number = 0;\n private emitThrottles: EmitEventObject[] = [];\n\n private config: DefaultGestureConfig;\n\n private tapCount;\n private lastTapTime;\n private lastTapTarget: IEventTarget | null = null;\n\n constructor(element: IEventTarget, config: GestureConfig = {}) {\n super();\n this.element = element;\n this.tapCount = 0;\n this.lastTapTime = 0;\n this.config = {\n press: {\n time: config?.press?.time ?? PRESS_TIME,\n threshold: config?.press?.threshold ?? PRESS_THRESHOLD\n },\n swipe: {\n threshold: config?.swipe?.threshold ?? SWIPE_THRESHOLD,\n velocity: config?.swipe?.velocity ?? SWIPE_VELOCITY\n },\n tap: {\n interval: config?.tap?.interval ?? TAP_INTERVAL\n }\n };\n this.initEvents();\n }\n\n initEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n\n element.addEventListener('pointerdown', this.onStart);\n element.addEventListener('pointermove', this.onMove);\n element.addEventListener('pointerup', this.onEnd);\n element.addEventListener('pointerupoutside', this.onEnd);\n }\n\n removeEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n element.removeEventListener('pointerdown', this.onStart);\n element.removeEventListener('pointermove', this.onMove);\n element.removeEventListener('pointerup', this.onEnd);\n element.removeEventListener('pointerupoutside', this.onEnd);\n }\n\n release() {\n this.removeEvents();\n this.element = null;\n }\n\n private onStart = (ev?: FederatedPointerEvent) => {\n this.cachedEvents = [];\n this.startPoints = [];\n this.reset();\n\n this.startTime = clock.now();\n\n const { cachedEvents, startPoints } = this;\n\n if (ev) {\n cachedEvents.push(ev.clone());\n }\n // 重置 startPoints\n startPoints.length = cachedEvents.length;\n for (let i = 0; i < cachedEvents.length; i++) {\n const { x, y } = cachedEvents[i];\n const point = { x, y };\n startPoints[i] = point;\n }\n\n if (startPoints.length === 1) {\n const event = cachedEvents[0] as unknown as GestureEvent;\n this.pressTimeout = setTimeout(() => {\n const eventType = 'press';\n const direction = 'none';\n event.direction = direction;\n event.deltaX = 0;\n event.deltaY = 0;\n event.points = startPoints;\n this.triggerStartEvent(eventType, event);\n this.triggerEvent(eventType, event);\n this.eventType = eventType;\n this.direction = direction;\n this.pressTimeout = null;\n }, this.config.press.time);\n return;\n }\n\n this.startDistance = calcDistance(startPoints[0], startPoints[1]);\n this.center = getCenter([startPoints[0], startPoints[1]]);\n };\n\n private onMove = (ev: FederatedPointerEvent) => {\n this.clearPressTimeout();\n const { startPoints, cachedEvents } = this;\n if (!startPoints.length) {\n return;\n }\n\n const moveEvent = ev.clone() as unknown as GestureEvent;\n const { x, y, pointerId } = moveEvent;\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (pointerId === cachedEvents[i].pointerId) {\n cachedEvents[i] = moveEvent;\n break;\n }\n }\n const point = { x, y };\n const points = cachedEvents.map(cachedEvent => ({ x: cachedEvent.x, y: cachedEvent.y }));\n\n const now = clock.now();\n this.prevMoveTime = this.lastMoveTime;\n this.prevMovePoint = this.lastMovePoint;\n this.lastMoveTime = now;\n this.lastMovePoint = point;\n\n if (startPoints.length === 1) {\n const startPoint = startPoints[0];\n const deltaX = x - startPoint.x;\n const deltaY = y - startPoint.y;\n const direction = this.direction || calcDirection(startPoint, point);\n this.direction = direction;\n\n const eventType = this.getEventType(point);\n moveEvent.direction = direction;\n moveEvent.deltaX = deltaX;\n moveEvent.deltaY = deltaY;\n moveEvent.points = points;\n this.triggerStartEvent(eventType, moveEvent);\n this.triggerEvent(eventType, moveEvent);\n return;\n }\n\n const { startDistance } = this;\n const currentDistance = calcDistance(points[0], points[1]);\n\n // 缩放比例\n moveEvent.scale = currentDistance / startDistance;\n moveEvent.center = this.center;\n moveEvent.points = points;\n this.triggerStartEvent('pinch', moveEvent);\n this.triggerEvent('pinch', moveEvent);\n };\n\n private onEnd = (ev: FederatedPointerEvent) => {\n const endEvent = ev.clone() as unknown as GestureEvent;\n const { cachedEvents, startPoints } = this;\n const points = cachedEvents.map(ev => {\n return { x: ev.x, y: ev.y };\n });\n endEvent.points = points;\n this.triggerEndEvent(endEvent);\n\n if (cachedEvents.length === 1) {\n const now = clock.now();\n const lastMoveTime = this.lastMoveTime;\n // 做这个判断是为了最后一次touchmove后到end前,是否还有一个停顿的过程\n // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内\n if (now - lastMoveTime < 100) {\n const prevMoveTime = this.prevMoveTime || this.startTime;\n const intervalTime = lastMoveTime - prevMoveTime;\n // 时间间隔一定要大于0, 否则计算没意义\n if (intervalTime > 0) {\n const prevMovePoint = this.prevMovePoint || startPoints[0];\n const lastMovePoint = this.lastMovePoint || startPoints[0];\n const distance = calcDistance(prevMovePoint, lastMovePoint);\n // move速率\n const velocity = distance / intervalTime;\n // 0.3 是参考hammerjs的设置\n if (velocity > this.config.swipe.velocity && distance > this.config.swipe.threshold) {\n endEvent.velocity = velocity;\n endEvent.direction = calcDirection(prevMovePoint, lastMovePoint);\n this.triggerEvent('swipe', endEvent);\n\n this.cachedEvents = [];\n this.startPoints = [];\n this.reset();\n return;\n }\n }\n }\n\n if (now - this.startTime < this.config.press.time) {\n if (now - this.lastTapTime < this.config.tap.interval && ev.target === this.lastTapTarget) {\n this.tapCount++;\n } else {\n this.tapCount = 1;\n }\n this.lastTapTime = now;\n this.lastTapTarget = ev.target;\n\n if (this.tapCount === 1) {\n this.triggerEvent('tap', endEvent);\n } else if (this.tapCount === 2) {\n this.triggerEvent('doubletap', endEvent);\n this.tapCount = 0; // reset tapCount after doubletap\n }\n }\n }\n\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (cachedEvents[i].pointerId === endEvent.pointerId) {\n cachedEvents.splice(i, 1);\n startPoints.splice(i, 1);\n break;\n }\n }\n\n this.reset();\n\n // 多指离开 1 指后,重新触发一次start\n if (cachedEvents.length > 0) {\n this.onStart();\n }\n };\n\n private getEventType(point: IPointLike) {\n const { eventType, startTime, startPoints } = this;\n if (eventType === 'press') {\n return eventType;\n }\n\n let type;\n const now = clock.now();\n if (now - startTime > this.config.press.time && calcDistance(startPoints[0], point) < this.config.press.threshold) {\n type = 'press';\n } else {\n type = 'pan';\n }\n this.eventType = type;\n return type;\n }\n\n private enable(eventType: string) {\n this.processEvent[eventType] = true;\n }\n\n // 是否进行中的事件\n private isProcess(eventType: string) {\n return this.processEvent[eventType];\n }\n\n private pushEvent(type: string, ev: GestureEvent) {\n const { emitThrottles } = this;\n const newEvent = { type, ev };\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n if (emitThrottles[i].type === type) {\n emitThrottles.splice(i, 1, newEvent);\n return;\n }\n }\n emitThrottles.push(newEvent);\n }\n\n private clearPressTimeout() {\n if (this.pressTimeout) {\n clearTimeout(this.pressTimeout);\n this.pressTimeout = null;\n }\n }\n\n private reset() {\n this.clearPressTimeout();\n this.startTime = 0;\n this.startDistance = 0;\n this.direction = null;\n this.eventType = null;\n this.prevMoveTime = 0;\n this.prevMovePoint = null;\n this.lastMoveTime = 0;\n this.lastMovePoint = null;\n }\n\n private triggerEvent(type: string, ev: GestureEvent) {\n // 主要是节流处理\n this.pushEvent(type, ev);\n const { throttleTimer, emitThrottles } = this;\n if (throttleTimer) {\n return;\n }\n\n this.throttleTimer = application.global.getRequestAnimationFrame()(() => {\n application.global.getCancelAnimationFrame()(this.throttleTimer);\n this.throttleTimer = null;\n\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n const { type, ev } = emitThrottles[i];\n this.emitEvent(type, ev);\n }\n // 清空\n this.emitThrottles.length = 0;\n });\n }\n\n // 触发start事件\n private triggerStartEvent(type: string, ev: GestureEvent) {\n if (this.isProcess(type)) {\n return;\n }\n this.enable(type);\n this.triggerEvent(`${type}start`, ev);\n }\n\n private triggerEndEvent(ev: GestureEvent) {\n const processEvent = this.processEvent;\n Object.keys(processEvent).forEach(type => {\n this.triggerEvent(`${type}end`, ev);\n if (type === 'press') {\n // pressend 别名,pressup\n this.triggerEvent(`${type}up`, ev);\n }\n delete processEvent[type];\n });\n }\n\n private emitEvent(type: string, e: GestureEvent) {\n const events = (this.element as unknown as any)._events;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n\n this.emit(type, e);\n }\n}\n"]}
|
|
@@ -44,8 +44,9 @@ let DefaultCanvasSymbolPicker = class extends base_3d_picker_1.Base3dPicker {
|
|
|
44
44
|
return this.canvasRenderer.drawShape(symbol, pickContext, x, y, {}, null, ((context, symbolAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(pickPoint.x, pickPoint.y),
|
|
45
45
|
picked)), ((context, symbolAttribute, themeAttribute) => {
|
|
46
46
|
if (picked) return !0;
|
|
47
|
-
const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
48
|
-
return pickContext.lineWidth =
|
|
47
|
+
const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer, keepStrokeScale = symbolAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
48
|
+
return pickContext.lineWidth = keepStrokeScale ? lineWidth + pickStrokeBuffer : (0,
|
|
49
|
+
vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
49
50
|
picked = context.isPointInStroke(pickPoint.x, pickPoint.y), picked;
|
|
50
51
|
})), this.canvasRenderer.z = 0, pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
|
|
51
52
|
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/canvas-picker/symbol-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAOgC;AAYhC,6DAAwD;AAGjD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6BAAqB;IAIlE,YAAkD,cAA8B;QAC9E,KAAK,EAAE,CAAC;QADwC,mBAAc,GAAd,cAAc,CAAgB;QAHhF,SAAI,GAAW,QAAQ,CAAC;QACxB,eAAU,GAAW,iCAAkB,CAAC;IAIxC,CAAC;IAED,QAAQ,CAAC,MAAe,EAAE,KAAa,EAAE,MAAoB;QAC3D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;gBAC3C,OAAO,KAAK,CAAC;aACd;YACD,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;gBACjE,OAAO,IAAI,CAAC;aACb;SACF;QAED,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAElC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAEjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAiB1C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACrD,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YACnF,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;SACpF;QAED,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,MAAM,EACN,WAAW,EACX,CAAC,EACD,CAAC,EACD,EAAS,EACT,IAAI,EACJ,CACE,OAAmB,EACnB,eAA4D,EAC5D,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CACE,OAAmB,EACnB,eAA4D,EAC5D,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;YACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;YAC7F,WAAW,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/canvas-picker/symbol-picker.ts"],"names":[],"mappings":"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","file":"symbol-picker.js","sourcesContent":["import {\n inject,\n injectable,\n SymbolRender,\n mat4Allocate,\n getScaledStroke,\n SYMBOL_NUMBER_TYPE\n} from '@visactor/vrender-core';\nimport type { IPoint } from '@visactor/vutils';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n ISymbol,\n IThemeAttribute,\n IGraphicPicker,\n IGraphicRender,\n IPickParams\n} from '@visactor/vrender-core';\nimport { Base3dPicker } from '../common/base-3d-picker';\n\n@injectable()\nexport class DefaultCanvasSymbolPicker extends Base3dPicker<ISymbol> implements IGraphicPicker {\n type: string = 'symbol';\n numberType: number = SYMBOL_NUMBER_TYPE;\n\n constructor(@inject(SymbolRender) public readonly canvasRenderer: IGraphicRender) {\n super();\n }\n\n contains(symbol: ISymbol, point: IPoint, params?: IPickParams): boolean {\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n const parsedPath = symbol.getParsedPath();\n if (!pickContext.camera) {\n if (!symbol.AABBBounds.containsPoint(point)) {\n return false;\n }\n if (parsedPath.isSvg || symbol.attribute.pickMode === 'imprecise') {\n return true;\n }\n }\n\n pickContext.highPerformanceSave();\n // const symbolAttribute = graphicService.themeService.getCurrentTheme().symbolAttribute;\n const symbolAttribute = symbol.getGraphicTheme();\n\n const data = this.transform(symbol, symbolAttribute, pickContext);\n const { x, y, z, lastModelMatrix } = data;\n // let { x = symbolAttribute.x, y = symbolAttribute.y } = symbol.attribute;\n\n // pickContext.highPerformanceSave();\n // if (!symbol.transMatrix.onlyTranslate()) {\n // // 性能较差\n // x = 0;\n // y = 0;\n // pickContext.transformFromMatrix(symbol.transMatrix, true);\n // } else {\n // const point = symbol.getOffsetXY(symbolAttribute);\n // x += point.x;\n // y += point.y;\n // // 当前context有rotate/scale,重置matrix\n // pickContext.setTransformForCurrent();\n // }\n\n let pickPoint = point;\n if (pickContext.camera) {\n pickPoint = point.clone();\n const globalMatrix = symbol.parent.globalTransMatrix;\n pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e;\n pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;\n }\n\n this.canvasRenderer.z = z;\n // 详细形状判断\n let picked = false;\n this.canvasRenderer.drawShape(\n symbol,\n pickContext,\n x,\n y,\n {} as any,\n null,\n (\n context: IContext2d,\n symbolAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n picked = context.isPointInPath(pickPoint.x, pickPoint.y);\n return picked;\n },\n (\n context: IContext2d,\n symbolAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth;\n const pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;\n const keepStrokeScale = symbolAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;\n pickContext.lineWidth = keepStrokeScale\n ? lineWidth + pickStrokeBuffer\n : getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n picked = context.isPointInStroke(pickPoint.x, pickPoint.y);\n return picked;\n }\n );\n\n this.canvasRenderer.z = 0;\n\n if (pickContext.modelMatrix !== lastModelMatrix) {\n mat4Allocate.free(pickContext.modelMatrix);\n }\n pickContext.modelMatrix = lastModelMatrix;\n pickContext.highPerformanceRestore();\n return picked;\n }\n}\n"]}
|
|
@@ -26,8 +26,9 @@ class BaseLinePicker extends vrender_core_1.BaseRender {
|
|
|
26
26
|
return this.canvasRenderer.drawShape(graphic, pickContext, x, y, {}, null, (context => !!picked || (picked = context.isPointInPath(pickPoint.x, pickPoint.y),
|
|
27
27
|
picked)), ((context, lineAttribute, themeAttribute) => {
|
|
28
28
|
if (picked) return !0;
|
|
29
|
-
const lineWidth = lineAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = lineAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
30
|
-
return pickContext.lineWidth =
|
|
29
|
+
const lineWidth = lineAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = lineAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer, keepStrokeScale = lineAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
30
|
+
return pickContext.lineWidth = keepStrokeScale ? lineWidth + pickStrokeBuffer : (0,
|
|
31
|
+
vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
31
32
|
picked = context.isPointInStroke(pickPoint.x, pickPoint.y), picked;
|
|
32
33
|
})), this.canvasRenderer.z = 0, pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
|
|
33
34
|
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/common/base-line-picker.ts"],"names":[],"mappings":";;;AAAA,yDAA6F;AAY7F,MAAsB,cAA+D,SAAQ,yBAAa;IAGxG,QAAQ,CAAC,OAAiB,EAAE,KAAa,EAAE,MAAoB;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAGD,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAE1C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACtD,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YACnF,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;SACpF;QAED,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,OAAO,EACP,WAAW,EACX,CAAC,EACD,CAAC,EACD,EAAS,EACT,IAAI,EACJ,OAAO,CAAC,EAAE;YAER,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CACE,OAAmB,EACnB,aAA0D,EAC1D,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;YACtE,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;YAC3F,WAAW,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/base-line-picker.ts"],"names":[],"mappings":"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","file":"base-line-picker.js","sourcesContent":["import { BaseRender, getScaledStroke, getTheme, mat4Allocate } from '@visactor/vrender-core';\nimport type {\n IGraphicAttribute,\n IGraphic,\n IPickParams,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IGraphicRender\n} from '@visactor/vrender-core';\nimport type { IPoint } from '@visactor/vutils';\n\nexport abstract class BaseLinePicker<T extends IGraphic<Partial<IGraphicAttribute>>> extends BaseRender<T> {\n canvasRenderer!: IGraphicRender;\n\n contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean {\n if (!graphic.AABBBounds.containsPoint(point)) {\n return false;\n }\n if (graphic.attribute.pickMode === 'imprecise') {\n return true;\n }\n\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n // const lineAttribute = graphicService.themeService.getCurrentTheme().lineAttribute;\n pickContext.highPerformanceSave();\n const lineAttribute = graphic.getGraphicTheme();\n\n const data = this.transform(graphic, lineAttribute, pickContext);\n const { x, y, z, lastModelMatrix } = data;\n\n let pickPoint = point;\n if (pickContext.camera) {\n pickPoint = point.clone();\n const globalMatrix = graphic.parent.globalTransMatrix;\n pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e;\n pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;\n }\n\n this.canvasRenderer.z = z;\n // 详细形状判断\n let picked = false;\n this.canvasRenderer.drawShape(\n graphic,\n pickContext,\n x,\n y,\n {} as any,\n null,\n context => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n picked = context.isPointInPath(pickPoint.x, pickPoint.y);\n return picked;\n },\n (\n context: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n const lineWidth = lineAttribute.lineWidth || themeAttribute.lineWidth;\n const pickStrokeBuffer = lineAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;\n const keepStrokeScale = lineAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;\n pickContext.lineWidth = keepStrokeScale\n ? lineWidth + pickStrokeBuffer\n : getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n picked = context.isPointInStroke(pickPoint.x, pickPoint.y);\n return picked;\n }\n );\n this.canvasRenderer.z = 0;\n\n if (pickContext.modelMatrix !== lastModelMatrix) {\n mat4Allocate.free(pickContext.modelMatrix);\n }\n pickContext.modelMatrix = lastModelMatrix;\n pickContext.highPerformanceRestore();\n return picked;\n }\n}\n"]}
|
|
@@ -23,8 +23,9 @@ class PickerBase {
|
|
|
23
23
|
return this.canvasRenderer.drawShape(graphic, pickContext, x, y, {}, null, ((context, arcAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y),
|
|
24
24
|
picked)), ((context, arcAttribute, themeAttribute) => {
|
|
25
25
|
if (picked) return !0;
|
|
26
|
-
const lineWidth = arcAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = arcAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
27
|
-
return pickContext.lineWidth =
|
|
26
|
+
const lineWidth = arcAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = arcAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer, keepStrokeScale = arcAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
27
|
+
return pickContext.lineWidth = keepStrokeScale ? lineWidth + pickStrokeBuffer : (0,
|
|
28
|
+
vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
28
29
|
picked = context.isPointInStroke(point.x, point.y), picked;
|
|
29
30
|
})), pickContext.highPerformanceRestore(), picked;
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/common/base.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AAazD,MAAsB,UAAU;IAG9B,QAAQ,CAAC,OAAiB,EAAE,KAAa,EAAE,MAAoB;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5C,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE;YAExC,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAC5D;aAAM;YACL,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,SAAuB,CAAC,CAAC;YAC3D,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACb,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YAEb,WAAW,CAAC,sBAAsB,EAAE,CAAC;SACtC;QAGD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,OAAO,EACP,WAAW,EACX,CAAC,EACD,CAAC,EACD,EAAS,EACT,IAAI,EACJ,CACE,OAAmB,EACnB,YAAyD,EACzD,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CACE,OAAmB,EACnB,YAAyD,EACzD,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;YACrE,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;YAC1F,WAAW,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/base.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AAazD,MAAsB,UAAU;IAG9B,QAAQ,CAAC,OAAiB,EAAE,KAAa,EAAE,MAAoB;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5C,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE;YAExC,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAC5D;aAAM;YACL,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,SAAuB,CAAC,CAAC;YAC3D,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACb,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YAEb,WAAW,CAAC,sBAAsB,EAAE,CAAC;SACtC;QAGD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,OAAO,EACP,WAAW,EACX,CAAC,EACD,CAAC,EACD,EAAS,EACT,IAAI,EACJ,CACE,OAAmB,EACnB,YAAyD,EACzD,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CACE,OAAmB,EACnB,YAAyD,EACzD,cAA+B,EAC/B,EAAE;YAEF,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;YACrE,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;YAC1F,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,IAAI,cAAc,CAAC,eAAe,CAAC;YACvF,WAAW,CAAC,SAAS,GAAG,eAAe;gBACrC,CAAC,CAAC,SAAS,GAAG,gBAAgB;gBAC9B,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAChF,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,WAAW,CAAC,sBAAsB,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA5ED,gCA4EC","file":"base.js","sourcesContent":["import { getScaledStroke } from '@visactor/vrender-core';\nimport type { IPoint } from '@visactor/vutils';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IThemeAttribute,\n IPickParams,\n IGraphicRender,\n IGraphic,\n ITransform\n} from '@visactor/vrender-core';\n\nexport abstract class PickerBase {\n canvasRenderer!: IGraphicRender;\n\n contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean {\n if (!graphic.AABBBounds.containsPoint(point)) {\n return false;\n }\n if (graphic.attribute.pickMode === 'imprecise') {\n return true;\n }\n\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n const attribute = graphic.getGraphicTheme();\n pickContext.highPerformanceSave();\n let { x = attribute.x, y = attribute.y } = graphic.attribute;\n if (!graphic.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n pickContext.transformFromMatrix(graphic.transMatrix, true);\n } else {\n const point = graphic.getOffsetXY(attribute as ITransform);\n x += point.x;\n y += point.y;\n // 当前context有rotate/scale,重置matrix\n pickContext.setTransformForCurrent();\n }\n\n // 详细形状判断\n let picked = false;\n this.canvasRenderer.drawShape(\n graphic,\n pickContext,\n x,\n y,\n {} as any,\n null,\n (\n context: IContext2d,\n arcAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n picked = context.isPointInPath(point.x, point.y);\n return picked;\n },\n (\n context: IContext2d,\n arcAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n const lineWidth = arcAttribute.lineWidth || themeAttribute.lineWidth;\n const pickStrokeBuffer = arcAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;\n const keepStrokeScale = arcAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;\n pickContext.lineWidth = keepStrokeScale\n ? lineWidth + pickStrokeBuffer\n : getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n picked = context.isPointInStroke(point.x, point.y);\n return picked;\n }\n );\n\n pickContext.highPerformanceRestore();\n return picked;\n }\n}\n"]}
|
|
@@ -5,8 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
}), exports.commonStrokeCb = void 0;
|
|
6
6
|
|
|
7
7
|
const vrender_core_1 = require("@visactor/vrender-core"), commonStrokeCb = (context, pickContext, symbolAttribute, themeAttribute, pickPoint) => {
|
|
8
|
-
const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
9
|
-
return pickContext.lineWidth =
|
|
8
|
+
const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer, keepStrokeScale = symbolAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
9
|
+
return pickContext.lineWidth = keepStrokeScale ? lineWidth + pickStrokeBuffer : (0,
|
|
10
|
+
vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
10
11
|
context.isPointInStroke(pickPoint.x, pickPoint.y);
|
|
11
12
|
};
|
|
12
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/common/picker-utils.ts"],"names":[],"mappings":";;;AAAA,yDAMgC;AAGzB,MAAM,cAAc,GAAG,CAC5B,OAAmB,EACnB,WAAuB,EACvB,eAA4D,EAC5D,cAA+B,EAC/B,SAAqB,EACrB,EAAE;IACF,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;IACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;IAC7F,WAAW,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/picker-utils.ts"],"names":[],"mappings":";;;AAAA,yDAMgC;AAGzB,MAAM,cAAc,GAAG,CAC5B,OAAmB,EACnB,WAAuB,EACvB,eAA4D,EAC5D,cAA+B,EAC/B,SAAqB,EACrB,EAAE;IACF,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;IACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;IAC7F,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,IAAI,cAAc,CAAC,eAAe,CAAC;IAC1F,WAAW,CAAC,SAAS,GAAG,eAAe;QACrC,CAAC,CAAC,SAAS,GAAG,gBAAgB;QAC9B,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAdW,QAAA,cAAc,kBAczB","file":"picker-utils.js","sourcesContent":["import {\n getScaledStroke,\n type IContext2d,\n type IGraphicAttribute,\n type IMarkAttribute,\n type IThemeAttribute\n} from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n\nexport const commonStrokeCb = (\n context: IContext2d,\n pickContext: IContext2d,\n symbolAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute,\n pickPoint: IPointLike\n) => {\n const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth;\n const pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;\n const keepStrokeScale = symbolAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;\n pickContext.lineWidth = keepStrokeScale\n ? lineWidth + pickStrokeBuffer\n : getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n return context.isPointInStroke(pickPoint.x, pickPoint.y);\n};\n"]}
|
|
@@ -29,8 +29,9 @@ class RectPickerBase {
|
|
|
29
29
|
this.canvasRenderer.drawShape(rect, pickContext, x, y, {}, null, ((context, rectAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y),
|
|
30
30
|
picked)), ((context, rectAttribute, themeAttribute) => {
|
|
31
31
|
if (picked) return !0;
|
|
32
|
-
const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
33
|
-
return pickContext.lineWidth =
|
|
32
|
+
const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer, keepStrokeScale = rectAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
33
|
+
return pickContext.lineWidth = keepStrokeScale ? lineWidth + pickStrokeBuffer : (0,
|
|
34
|
+
vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
34
35
|
picked = context.isPointInStroke(point.x, point.y), picked;
|
|
35
36
|
})); else {
|
|
36
37
|
const {fill: fill = rectAttribute.fill, stroke: stroke = rectAttribute.stroke, lineWidth: lineWidth = rectAttribute.lineWidth} = rect.attribute;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/common/rect-picker-base.ts"],"names":[],"mappings":";;;AACA,6CAAiE;AACjE,yDAA2E;AAW3E,MAAM,OAAO,GAAG,IAAI,mBAAU,EAAE,CAAC;AAEjC,MAAa,cAAc;IAA3B;QACE,SAAI,GAAW,MAAM,CAAC;QACtB,eAAU,GAAW,+BAAgB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/rect-picker-base.ts"],"names":[],"mappings":"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","file":"rect-picker-base.js","sourcesContent":["import type { IPoint } from '@visactor/vutils';\nimport { isArray, isNumber, AABBBounds } from '@visactor/vutils';\nimport { getScaledStroke, RECT_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IRect,\n IThemeAttribute,\n IGraphicRender,\n IPickParams,\n ITransform\n} from '@visactor/vrender-core';\nconst _bounds = new AABBBounds();\n\nexport class RectPickerBase {\n type: string = 'rect';\n numberType: number = RECT_NUMBER_TYPE;\n\n canvasRenderer!: IGraphicRender;\n\n contains(rect: IRect, point: IPoint, params?: IPickParams): boolean {\n if (!rect.AABBBounds.containsPoint(point)) {\n return false;\n }\n if (rect.attribute.pickMode === 'imprecise') {\n return true;\n }\n\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n // const { rectAttribute } = graphicService.themeService.getCurrentTheme();\n const rectAttribute = rect.getGraphicTheme();\n const { cornerRadius = rectAttribute.cornerRadius } = rect.attribute;\n let { x = rectAttribute.x, y = rectAttribute.y } = rect.attribute;\n\n pickContext.highPerformanceSave();\n let onlyTranslate = true;\n if (!rect.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n onlyTranslate = false;\n pickContext.transformFromMatrix(rect.transMatrix, true);\n } else {\n const point = rect.getOffsetXY(rectAttribute as ITransform);\n x += point.x;\n y += point.y;\n // 当前context有rotate/scale,重置matrix\n pickContext.setTransformForCurrent();\n }\n\n let picked = true;\n // 处理圆角情况,或者存在shadowRoot的情况,无圆角直接使用bounds判断结果\n if (\n !onlyTranslate ||\n rect.shadowRoot ||\n (isNumber(cornerRadius, true) && cornerRadius !== 0) ||\n (isArray(cornerRadius) && (<number[]>cornerRadius).some(num => num !== 0))\n ) {\n // 详细形状判断\n picked = false;\n this.canvasRenderer.drawShape(\n rect,\n pickContext,\n x,\n y,\n {} as any,\n null,\n (\n context: IContext2d,\n rectAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n picked = context.isPointInPath(point.x, point.y);\n return picked;\n },\n (\n context: IContext2d,\n rectAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => {\n // 选中后面就不需要再走逻辑了\n if (picked) {\n return true;\n }\n const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth;\n const pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;\n const keepStrokeScale = rectAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;\n pickContext.lineWidth = keepStrokeScale\n ? lineWidth + pickStrokeBuffer\n : getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n picked = context.isPointInStroke(point.x, point.y);\n return picked;\n }\n );\n } else {\n // 如果只有描边那需要测试描边\n const {\n fill = rectAttribute.fill,\n stroke = rectAttribute.stroke,\n lineWidth = rectAttribute.lineWidth\n } = rect.attribute;\n if (fill) {\n picked = true;\n } else if (stroke) {\n const bounds = rect.AABBBounds;\n _bounds.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2);\n _bounds.expand(-lineWidth / 2);\n picked = !_bounds.containsPoint(point);\n }\n }\n\n pickContext.highPerformanceRestore();\n return picked; // 无圆角形状判断通过\n }\n}\n"]}
|
package/dist/index.es.js
CHANGED
|
@@ -2576,7 +2576,7 @@ class Gesture extends EventEmitter {
|
|
|
2576
2576
|
}
|
|
2577
2577
|
getEventType(point) {
|
|
2578
2578
|
const { eventType, startTime, startPoints } = this;
|
|
2579
|
-
if (eventType) {
|
|
2579
|
+
if (eventType === 'press') {
|
|
2580
2580
|
return eventType;
|
|
2581
2581
|
}
|
|
2582
2582
|
let type;
|
|
@@ -3391,8 +3391,8 @@ let BrowserContext2d = class BrowserContext2d {
|
|
|
3391
3391
|
const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;
|
|
3392
3392
|
_context.globalAlpha = strokeOpacity * opacity * this.baseGlobalAlpha;
|
|
3393
3393
|
if (strokeOpacity > 1e-12 && opacity > 1e-12) {
|
|
3394
|
-
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit } = attribute;
|
|
3395
|
-
_context.lineWidth = getScaledStroke(this, lineWidth, this.dpr);
|
|
3394
|
+
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit, keepStrokeScale = defaultParams.keepStrokeScale } = attribute;
|
|
3395
|
+
_context.lineWidth = keepStrokeScale ? lineWidth : getScaledStroke(this, lineWidth, this.dpr);
|
|
3396
3396
|
_context.strokeStyle = createColor(this, stroke, params, offsetX, offsetY);
|
|
3397
3397
|
_context.lineJoin = lineJoin;
|
|
3398
3398
|
lineDash && _context.setLineDash(lineDash);
|
|
@@ -4602,7 +4602,10 @@ class PickerBase {
|
|
|
4602
4602
|
}
|
|
4603
4603
|
const lineWidth = arcAttribute.lineWidth || themeAttribute.lineWidth;
|
|
4604
4604
|
const pickStrokeBuffer = arcAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
4605
|
-
|
|
4605
|
+
const keepStrokeScale = arcAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
4606
|
+
pickContext.lineWidth = keepStrokeScale
|
|
4607
|
+
? lineWidth + pickStrokeBuffer
|
|
4608
|
+
: getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);
|
|
4606
4609
|
picked = context.isPointInStroke(point.x, point.y);
|
|
4607
4610
|
return picked;
|
|
4608
4611
|
});
|
|
@@ -4891,7 +4894,10 @@ class RectPickerBase {
|
|
|
4891
4894
|
}
|
|
4892
4895
|
const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth;
|
|
4893
4896
|
const pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
4894
|
-
|
|
4897
|
+
const keepStrokeScale = rectAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
4898
|
+
pickContext.lineWidth = keepStrokeScale
|
|
4899
|
+
? lineWidth + pickStrokeBuffer
|
|
4900
|
+
: getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);
|
|
4895
4901
|
picked = context.isPointInStroke(point.x, point.y);
|
|
4896
4902
|
return picked;
|
|
4897
4903
|
});
|
|
@@ -5274,9 +5280,9 @@ let LynxContext2d = class LynxContext2d extends BrowserContext2d {
|
|
|
5274
5280
|
}
|
|
5275
5281
|
const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;
|
|
5276
5282
|
if (strokeOpacity > 1e-12 && opacity > 1e-12) {
|
|
5277
|
-
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit } = attribute;
|
|
5283
|
+
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit, keepStrokeScale = defaultParams.keepStrokeScale } = attribute;
|
|
5278
5284
|
_context.globalAlpha = strokeOpacity * opacity * this.baseGlobalAlpha;
|
|
5279
|
-
_context.lineWidth = getScaledStroke(this, lineWidth, this.dpr);
|
|
5285
|
+
_context.lineWidth = keepStrokeScale ? lineWidth : getScaledStroke(this, lineWidth, this.dpr);
|
|
5280
5286
|
_context.strokeStyle = createColor(this, stroke, params, offsetX, offsetY);
|
|
5281
5287
|
_context.lineJoin = lineJoin;
|
|
5282
5288
|
if (!(lineDash[0] === 0 && lineDash[1] === 0)) {
|
|
@@ -6068,9 +6074,9 @@ let TaroContext2d = class TaroContext2d extends BrowserContext2d {
|
|
|
6068
6074
|
}
|
|
6069
6075
|
const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;
|
|
6070
6076
|
if (strokeOpacity > 1e-12 && opacity > 1e-12) {
|
|
6071
|
-
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit } = attribute;
|
|
6077
|
+
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit, keepStrokeScale = defaultParams.keepStrokeScale } = attribute;
|
|
6072
6078
|
_context.setGlobalAlpha(strokeOpacity * opacity);
|
|
6073
|
-
_context.setLineWidth(getScaledStroke(this, lineWidth, this.dpr));
|
|
6079
|
+
_context.setLineWidth(keepStrokeScale ? lineWidth : getScaledStroke(this, lineWidth, this.dpr));
|
|
6074
6080
|
_context.setStrokeStyle(createColor(this, stroke, params, offsetX, offsetY));
|
|
6075
6081
|
_context.setLineJoin(lineJoin);
|
|
6076
6082
|
lineDash && _context.setLineDash(lineDash);
|
|
@@ -7320,9 +7326,9 @@ let HarmonyContext2d = class HarmonyContext2d extends BrowserContext2d {
|
|
|
7320
7326
|
}
|
|
7321
7327
|
const { strokeOpacity = defaultParams.strokeOpacity, opacity = defaultParams.opacity } = attribute;
|
|
7322
7328
|
if (strokeOpacity > 1e-12 && opacity > 1e-12) {
|
|
7323
|
-
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit } = attribute;
|
|
7329
|
+
const { lineWidth = defaultParams.lineWidth, stroke = defaultParams.stroke, lineJoin = defaultParams.lineJoin, lineDash = defaultParams.lineDash, lineCap = defaultParams.lineCap, miterLimit = defaultParams.miterLimit, keepStrokeScale = defaultParams.keepStrokeScale } = attribute;
|
|
7324
7330
|
_context.globalAlpha = strokeOpacity * opacity * this.baseGlobalAlpha;
|
|
7325
|
-
_context.lineWidth = getScaledStroke(this, lineWidth, this.dpr);
|
|
7331
|
+
_context.lineWidth = keepStrokeScale ? lineWidth : getScaledStroke(this, lineWidth, this.dpr);
|
|
7326
7332
|
_context.strokeStyle = createColor(this, stroke, params, offsetX, offsetY);
|
|
7327
7333
|
_context.lineJoin = lineJoin;
|
|
7328
7334
|
if (!(lineDash[0] === 0 && lineDash[1] === 0)) {
|
|
@@ -7838,7 +7844,10 @@ class BaseLinePicker extends BaseRender {
|
|
|
7838
7844
|
}
|
|
7839
7845
|
const lineWidth = lineAttribute.lineWidth || themeAttribute.lineWidth;
|
|
7840
7846
|
const pickStrokeBuffer = lineAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
7841
|
-
|
|
7847
|
+
const keepStrokeScale = lineAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
7848
|
+
pickContext.lineWidth = keepStrokeScale
|
|
7849
|
+
? lineWidth + pickStrokeBuffer
|
|
7850
|
+
: getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);
|
|
7842
7851
|
picked = context.isPointInStroke(pickPoint.x, pickPoint.y);
|
|
7843
7852
|
return picked;
|
|
7844
7853
|
});
|
|
@@ -7982,7 +7991,10 @@ let DefaultCanvasSymbolPicker = class DefaultCanvasSymbolPicker extends Base3dPi
|
|
|
7982
7991
|
}
|
|
7983
7992
|
const lineWidth = symbolAttribute.lineWidth || themeAttribute.lineWidth;
|
|
7984
7993
|
const pickStrokeBuffer = symbolAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
7985
|
-
|
|
7994
|
+
const keepStrokeScale = symbolAttribute.keepStrokeScale || themeAttribute.keepStrokeScale;
|
|
7995
|
+
pickContext.lineWidth = keepStrokeScale
|
|
7996
|
+
? lineWidth + pickStrokeBuffer
|
|
7997
|
+
: getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);
|
|
7986
7998
|
picked = context.isPointInStroke(pickPoint.x, pickPoint.y);
|
|
7987
7999
|
return picked;
|
|
7988
8000
|
});
|
|
@@ -450,10 +450,10 @@ let BrowserContext2d = class {
|
|
|
450
450
|
defaultParams || (defaultParams = this.strokeAttributes);
|
|
451
451
|
const {strokeOpacity: strokeOpacity = defaultParams.strokeOpacity, opacity: opacity = defaultParams.opacity} = attribute;
|
|
452
452
|
if (_context.globalAlpha = strokeOpacity * opacity * this.baseGlobalAlpha, strokeOpacity > 1e-12 && opacity > 1e-12) {
|
|
453
|
-
const {lineWidth: lineWidth = defaultParams.lineWidth, stroke: stroke = defaultParams.stroke, lineJoin: lineJoin = defaultParams.lineJoin, lineDash: lineDash = defaultParams.lineDash, lineCap: lineCap = defaultParams.lineCap, miterLimit: miterLimit = defaultParams.miterLimit} = attribute;
|
|
454
|
-
_context.lineWidth = getScaledStroke(this, lineWidth, this.dpr),
|
|
455
|
-
_context.
|
|
456
|
-
_context.miterLimit = miterLimit;
|
|
453
|
+
const {lineWidth: lineWidth = defaultParams.lineWidth, stroke: stroke = defaultParams.stroke, lineJoin: lineJoin = defaultParams.lineJoin, lineDash: lineDash = defaultParams.lineDash, lineCap: lineCap = defaultParams.lineCap, miterLimit: miterLimit = defaultParams.miterLimit, keepStrokeScale: keepStrokeScale = defaultParams.keepStrokeScale} = attribute;
|
|
454
|
+
_context.lineWidth = keepStrokeScale ? lineWidth : getScaledStroke(this, lineWidth, this.dpr),
|
|
455
|
+
_context.strokeStyle = createColor(this, stroke, params, offsetX, offsetY), _context.lineJoin = lineJoin,
|
|
456
|
+
lineDash && _context.setLineDash(lineDash), _context.lineCap = lineCap, _context.miterLimit = miterLimit;
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
setTextStyleWithoutAlignBaseline(params, defaultParams, z) {
|