@visactor/vrender-kits 0.19.19 → 0.20.0-alpha.1
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 +3 -3
- package/cjs/canvas/contributions/harmony/context.js.map +1 -1
- package/cjs/canvas/contributions/taro/context.js +3 -3
- package/cjs/canvas/contributions/taro/context.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/arc-picker.d.ts +3 -4
- package/cjs/picker/contributions/canvas-picker/arc-picker.js +3 -24
- package/cjs/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/arc3d-picker.d.ts +4 -5
- package/cjs/picker/contributions/canvas-picker/arc3d-picker.js +4 -23
- package/cjs/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/area-picker.d.ts +3 -4
- package/cjs/picker/contributions/canvas-picker/area-picker.js +3 -25
- package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/circle-picker.d.ts +3 -4
- package/cjs/picker/contributions/canvas-picker/circle-picker.js +3 -23
- package/cjs/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/glyph-picker.d.ts +3 -6
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js +3 -19
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/line-picker.d.ts +3 -5
- package/cjs/picker/contributions/canvas-picker/line-picker.js +2 -28
- package/cjs/picker/contributions/canvas-picker/line-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/path-picker.d.ts +3 -5
- package/cjs/picker/contributions/canvas-picker/path-picker.js +2 -29
- package/cjs/picker/contributions/canvas-picker/path-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/polygon-picker.d.ts +3 -4
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js +3 -23
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.d.ts +4 -5
- package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js +4 -24
- package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/rect-picker.d.ts +3 -6
- package/cjs/picker/contributions/canvas-picker/rect-picker.js +3 -35
- package/cjs/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/rect3d-picker.d.ts +4 -5
- package/cjs/picker/contributions/canvas-picker/rect3d-picker.js +4 -23
- package/cjs/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/symbol-picker.d.ts +2 -2
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js +2 -2
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/text-picker.d.ts +2 -2
- package/cjs/picker/contributions/canvas-picker/text-picker.js +2 -2
- package/cjs/picker/contributions/canvas-picker/text-picker.js.map +1 -1
- package/cjs/picker/contributions/common/base-3d-picker.d.ts +8 -0
- package/cjs/picker/contributions/common/base-3d-picker.js +34 -0
- package/cjs/picker/contributions/common/base-3d-picker.js.map +1 -0
- package/cjs/picker/contributions/common/base-line-picker.d.ts +7 -0
- package/cjs/picker/contributions/common/base-line-picker.js +39 -0
- package/cjs/picker/contributions/common/base-line-picker.js.map +1 -0
- package/cjs/picker/contributions/common/base.d.ts +6 -0
- package/cjs/picker/contributions/common/base.js +34 -0
- package/cjs/picker/contributions/common/base.js.map +1 -0
- package/cjs/picker/contributions/common/glyph-picker-base.d.ts +7 -0
- package/cjs/picker/contributions/common/glyph-picker-base.js +32 -0
- package/cjs/picker/contributions/common/glyph-picker-base.js.map +1 -0
- package/cjs/picker/contributions/common/picker-utils.d.ts +3 -0
- package/cjs/picker/contributions/common/picker-utils.js +14 -0
- package/cjs/picker/contributions/common/picker-utils.js.map +1 -0
- package/cjs/picker/contributions/common/rect-picker-base.d.ts +8 -0
- package/cjs/picker/contributions/common/rect-picker-base.js +48 -0
- package/cjs/picker/contributions/common/rect-picker-base.js.map +1 -0
- package/cjs/picker/contributions/math-picker/arc-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/arc-picker.js +3 -24
- package/cjs/picker/contributions/math-picker/arc-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/area-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/area-picker.js +3 -18
- package/cjs/picker/contributions/math-picker/area-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/circle-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/circle-picker.js +3 -23
- package/cjs/picker/contributions/math-picker/circle-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/glyph-picker.d.ts +3 -6
- package/cjs/picker/contributions/math-picker/glyph-picker.js +3 -17
- package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/line-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/line-picker.js +3 -23
- package/cjs/picker/contributions/math-picker/line-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/path-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/path-picker.js +3 -23
- package/cjs/picker/contributions/math-picker/path-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/polygon-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/polygon-picker.js +3 -22
- package/cjs/picker/contributions/math-picker/polygon-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/rect-picker.d.ts +3 -6
- package/cjs/picker/contributions/math-picker/rect-picker.js +3 -35
- package/cjs/picker/contributions/math-picker/rect-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/symbol-picker.d.ts +3 -4
- package/cjs/picker/contributions/math-picker/symbol-picker.js +3 -23
- package/cjs/picker/contributions/math-picker/symbol-picker.js.map +1 -1
- package/cjs/register/register-arc3d.js +1 -0
- package/cjs/register/register-arc3d.js.map +1 -1
- package/cjs/register/register-pyramid3d.js +1 -0
- package/cjs/register/register-pyramid3d.js.map +1 -1
- package/cjs/render/contributions/rough/base-render.d.ts +5 -0
- package/cjs/render/contributions/rough/base-render.js +14 -0
- package/cjs/render/contributions/rough/base-render.js.map +1 -0
- package/cjs/render/contributions/rough/rough-arc.d.ts +3 -3
- package/cjs/render/contributions/rough/rough-arc.js +4 -6
- package/cjs/render/contributions/rough/rough-arc.js.map +1 -1
- package/cjs/render/contributions/rough/rough-circle.d.ts +3 -3
- package/cjs/render/contributions/rough/rough-circle.js +3 -6
- package/cjs/render/contributions/rough/rough-circle.js.map +1 -1
- package/cjs/render/contributions/rough/rough-path.d.ts +3 -3
- package/cjs/render/contributions/rough/rough-path.js +3 -6
- package/cjs/render/contributions/rough/rough-path.js.map +1 -1
- package/cjs/render/contributions/rough/rough-rect.d.ts +3 -3
- package/cjs/render/contributions/rough/rough-rect.js +3 -6
- package/cjs/render/contributions/rough/rough-rect.js.map +1 -1
- package/dist/index.es.js +156 -784
- package/es/canvas/contributions/browser/context.js +2 -2
- package/es/canvas/contributions/browser/context.js.map +1 -1
- package/es/canvas/contributions/harmony/context.js +3 -1
- package/es/canvas/contributions/harmony/context.js.map +1 -1
- package/es/canvas/contributions/taro/context.js +3 -1
- package/es/canvas/contributions/taro/context.js.map +1 -1
- package/es/picker/contributions/canvas-picker/arc-picker.d.ts +3 -4
- package/es/picker/contributions/canvas-picker/arc-picker.js +5 -24
- package/es/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/arc3d-picker.d.ts +4 -5
- package/es/picker/contributions/canvas-picker/arc3d-picker.js +5 -24
- package/es/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/area-picker.d.ts +3 -4
- package/es/picker/contributions/canvas-picker/area-picker.js +5 -25
- package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/circle-picker.d.ts +3 -4
- package/es/picker/contributions/canvas-picker/circle-picker.js +5 -23
- package/es/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/glyph-picker.d.ts +3 -6
- package/es/picker/contributions/canvas-picker/glyph-picker.js +5 -19
- package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/line-picker.d.ts +3 -5
- package/es/picker/contributions/canvas-picker/line-picker.js +3 -29
- package/es/picker/contributions/canvas-picker/line-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/path-picker.d.ts +3 -5
- package/es/picker/contributions/canvas-picker/path-picker.js +3 -30
- package/es/picker/contributions/canvas-picker/path-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/polygon-picker.d.ts +3 -4
- package/es/picker/contributions/canvas-picker/polygon-picker.js +5 -23
- package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/pyramid3d-picker.d.ts +4 -5
- package/es/picker/contributions/canvas-picker/pyramid3d-picker.js +5 -25
- package/es/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/rect-picker.d.ts +3 -6
- package/es/picker/contributions/canvas-picker/rect-picker.js +4 -37
- package/es/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/rect3d-picker.d.ts +4 -5
- package/es/picker/contributions/canvas-picker/rect3d-picker.js +5 -28
- package/es/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/symbol-picker.d.ts +2 -2
- 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/canvas-picker/text-picker.d.ts +2 -2
- package/es/picker/contributions/canvas-picker/text-picker.js +2 -2
- package/es/picker/contributions/canvas-picker/text-picker.js.map +1 -1
- package/es/picker/contributions/common/base-3d-picker.d.ts +8 -0
- package/es/picker/contributions/common/base-3d-picker.js +26 -0
- package/es/picker/contributions/common/base-3d-picker.js.map +1 -0
- package/es/picker/contributions/common/base-line-picker.d.ts +7 -0
- package/es/picker/contributions/common/base-line-picker.js +31 -0
- package/es/picker/contributions/common/base-line-picker.js.map +1 -0
- package/es/picker/contributions/common/base.d.ts +6 -0
- package/es/picker/contributions/common/base.js +26 -0
- package/es/picker/contributions/common/base.js.map +1 -0
- package/es/picker/contributions/common/glyph-picker-base.d.ts +7 -0
- package/es/picker/contributions/common/glyph-picker-base.js +24 -0
- package/es/picker/contributions/common/glyph-picker-base.js.map +1 -0
- package/es/picker/contributions/common/picker-utils.d.ts +3 -0
- package/es/picker/contributions/common/picker-utils.js +8 -0
- package/es/picker/contributions/common/picker-utils.js.map +1 -0
- package/es/picker/contributions/common/rect-picker-base.d.ts +8 -0
- package/es/picker/contributions/common/rect-picker-base.js +43 -0
- package/es/picker/contributions/common/rect-picker-base.js.map +1 -0
- package/es/picker/contributions/math-picker/arc-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/arc-picker.js +5 -24
- package/es/picker/contributions/math-picker/arc-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/area-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/area-picker.js +5 -18
- package/es/picker/contributions/math-picker/area-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/circle-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/circle-picker.js +5 -23
- package/es/picker/contributions/math-picker/circle-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/glyph-picker.d.ts +3 -6
- package/es/picker/contributions/math-picker/glyph-picker.js +5 -17
- package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/line-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/line-picker.js +5 -23
- package/es/picker/contributions/math-picker/line-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/path-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/path-picker.js +5 -23
- package/es/picker/contributions/math-picker/path-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/polygon-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/polygon-picker.js +5 -22
- package/es/picker/contributions/math-picker/polygon-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/rect-picker.d.ts +3 -6
- package/es/picker/contributions/math-picker/rect-picker.js +4 -37
- package/es/picker/contributions/math-picker/rect-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/symbol-picker.d.ts +3 -4
- package/es/picker/contributions/math-picker/symbol-picker.js +5 -23
- package/es/picker/contributions/math-picker/symbol-picker.js.map +1 -1
- package/es/register/register-arc3d.js +3 -2
- package/es/register/register-arc3d.js.map +1 -1
- package/es/register/register-pyramid3d.js +3 -2
- package/es/register/register-pyramid3d.js.map +1 -1
- package/es/render/contributions/rough/base-render.d.ts +5 -0
- package/es/render/contributions/rough/base-render.js +6 -0
- package/es/render/contributions/rough/base-render.js.map +1 -0
- package/es/render/contributions/rough/rough-arc.d.ts +3 -3
- package/es/render/contributions/rough/rough-arc.js +5 -5
- package/es/render/contributions/rough/rough-arc.js.map +1 -1
- package/es/render/contributions/rough/rough-circle.d.ts +3 -3
- package/es/render/contributions/rough/rough-circle.js +4 -5
- package/es/render/contributions/rough/rough-circle.js.map +1 -1
- package/es/render/contributions/rough/rough-path.d.ts +3 -3
- package/es/render/contributions/rough/rough-path.js +4 -5
- package/es/render/contributions/rough/rough-path.js.map +1 -1
- package/es/render/contributions/rough/rough-rect.d.ts +3 -3
- package/es/render/contributions/rough/rough-rect.js +4 -5
- package/es/render/contributions/rough/rough-rect.js.map +1 -1
- package/package.json +3 -3
- package/cjs/picker/contributions/canvas-picker/base-picker.d.ts +0 -4
- package/cjs/picker/contributions/canvas-picker/base-picker.js +0 -18
- package/cjs/picker/contributions/canvas-picker/base-picker.js.map +0 -1
- package/es/picker/contributions/canvas-picker/base-picker.d.ts +0 -4
- package/es/picker/contributions/canvas-picker/base-picker.js +0 -14
- package/es/picker/contributions/canvas-picker/base-picker.js.map +0 -1
|
@@ -16,43 +16,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasRectPicker = void 0;
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const vrender_core_1 = require("@visactor/vrender-core"), rect_picker_base_1 = require("../common/rect-picker-base");
|
|
20
20
|
|
|
21
|
-
let DefaultCanvasRectPicker = class {
|
|
21
|
+
let DefaultCanvasRectPicker = class extends rect_picker_base_1.RectPickerBase {
|
|
22
22
|
constructor(canvasRenderer) {
|
|
23
|
-
this.canvasRenderer = canvasRenderer
|
|
24
|
-
}
|
|
25
|
-
contains(rect, point, params) {
|
|
26
|
-
if (!rect.AABBBounds.containsPoint(point)) return !1;
|
|
27
|
-
if ("imprecise" === rect.attribute.pickMode) return !0;
|
|
28
|
-
const {pickContext: pickContext} = null != params ? params : {};
|
|
29
|
-
if (!pickContext) return !1;
|
|
30
|
-
const rectAttribute = (0, vrender_core_1.getTheme)(rect).rect, {cornerRadius: cornerRadius = rectAttribute.cornerRadius} = rect.attribute;
|
|
31
|
-
let {x: x = rectAttribute.x, y: y = rectAttribute.y} = rect.attribute;
|
|
32
|
-
pickContext.highPerformanceSave();
|
|
33
|
-
let onlyTranslate = !0;
|
|
34
|
-
if (rect.transMatrix.onlyTranslate()) {
|
|
35
|
-
const point = rect.getOffsetXY(rectAttribute);
|
|
36
|
-
x += point.x, y += point.y, pickContext.setTransformForCurrent();
|
|
37
|
-
} else x = 0, y = 0, onlyTranslate = !1, pickContext.transformFromMatrix(rect.transMatrix, !0);
|
|
38
|
-
let picked = !0;
|
|
39
|
-
if (!onlyTranslate || rect.shadowRoot || (0, vutils_1.isNumber)(cornerRadius, !0) && 0 !== cornerRadius || (0,
|
|
40
|
-
vutils_1.isArray)(cornerRadius) && cornerRadius.some((num => 0 !== num))) picked = !1,
|
|
41
|
-
this.canvasRenderer.drawShape(rect, pickContext, x, y, {}, null, ((context, rectAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y),
|
|
42
|
-
picked)), ((context, rectAttribute, themeAttribute) => {
|
|
43
|
-
if (picked) return !0;
|
|
44
|
-
const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
45
|
-
return pickContext.lineWidth = (0, vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
46
|
-
picked = context.isPointInStroke(point.x, point.y), picked;
|
|
47
|
-
})); else {
|
|
48
|
-
const {fill: fill = rectAttribute.fill, stroke: stroke = rectAttribute.stroke, lineWidth: lineWidth = rectAttribute.lineWidth} = rect.attribute;
|
|
49
|
-
if (fill) picked = !0; else if (stroke) {
|
|
50
|
-
const bounds = rect.AABBBounds;
|
|
51
|
-
_bounds.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2), _bounds.expand(-lineWidth / 2),
|
|
52
|
-
picked = !_bounds.containsPoint(point);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return pickContext.highPerformanceRestore(), picked;
|
|
23
|
+
super(), this.canvasRenderer = canvasRenderer;
|
|
56
24
|
}
|
|
57
25
|
};
|
|
58
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/canvas-picker/rect-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/canvas-picker/rect-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAwE;AAExE,iEAA4D;AAGrD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,iCAAc;IACzD,YAAgD,cAA8B;QAC5E,KAAK,EAAE,CAAC;QADsC,mBAAc,GAAd,cAAc,CAAgB;IAE9E,CAAC;CACF,CAAA;AAJY,uBAAuB;IADnC,IAAA,yBAAU,GAAE;IAEE,WAAA,IAAA,qBAAM,EAAC,yBAAU,CAAC,CAAA;;GADpB,uBAAuB,CAInC;AAJY,0DAAuB","file":"rect-picker.js","sourcesContent":["import { inject, injectable, RectRender } from '@visactor/vrender-core';\nimport type { IGraphicPicker, IGraphicRender } from '@visactor/vrender-core';\nimport { RectPickerBase } from '../common/rect-picker-base';\n\n@injectable()\nexport class DefaultCanvasRectPicker extends RectPickerBase implements IGraphicPicker {\n constructor(@inject(RectRender) public readonly canvasRenderer: IGraphicRender) {\n super();\n }\n}\n"]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
export declare class DefaultCanvasRect3dPicker extends BasePicker<IRect3d> implements IGraphicPicker {
|
|
1
|
+
import type { IRect3d, IGraphicPicker, IGraphicRender } from '@visactor/vrender-core';
|
|
2
|
+
import { Base3dPicker } from '../common/base-3d-picker';
|
|
3
|
+
export declare class DefaultCanvasRect3dPicker extends Base3dPicker<IRect3d> implements IGraphicPicker {
|
|
5
4
|
readonly canvasRenderer: IGraphicRender;
|
|
6
5
|
type: string;
|
|
7
6
|
numberType: number;
|
|
7
|
+
themeType: string;
|
|
8
8
|
constructor(canvasRenderer: IGraphicRender);
|
|
9
|
-
contains(rect: IRect3d, point: IPoint, params?: IPickParams): boolean;
|
|
10
9
|
}
|
|
@@ -16,31 +16,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasRect3dPicker = void 0;
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const vrender_core_1 = require("@visactor/vrender-core"), base_3d_picker_1 = require("../common/base-3d-picker");
|
|
20
20
|
|
|
21
|
-
let DefaultCanvasRect3dPicker = class extends
|
|
21
|
+
let DefaultCanvasRect3dPicker = class extends base_3d_picker_1.Base3dPicker {
|
|
22
22
|
constructor(canvasRenderer) {
|
|
23
|
-
super(), this.canvasRenderer = canvasRenderer, this.type = "rect3d", this.numberType = vrender_core_1.RECT3D_NUMBER_TYPE
|
|
24
|
-
|
|
25
|
-
contains(rect, point, params) {
|
|
26
|
-
const {pickContext: pickContext} = null != params ? params : {};
|
|
27
|
-
if (!pickContext) return !1;
|
|
28
|
-
const rectAttribute = (0, vrender_core_1.getTheme)(rect).rect;
|
|
29
|
-
pickContext.highPerformanceSave();
|
|
30
|
-
const data = this.transform(rect, rectAttribute, pickContext), {x: x, y: y, z: z, lastModelMatrix: lastModelMatrix} = data;
|
|
31
|
-
let pickPoint = point;
|
|
32
|
-
if (pickContext.camera) {
|
|
33
|
-
pickPoint = point.clone();
|
|
34
|
-
const globalMatrix = rect.parent.globalTransMatrix;
|
|
35
|
-
pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e,
|
|
36
|
-
pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;
|
|
37
|
-
}
|
|
38
|
-
this.canvasRenderer.z = z;
|
|
39
|
-
let picked = !1;
|
|
40
|
-
return this.canvasRenderer.drawShape(rect, pickContext, x, y, params, null, ((context, arc3dAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(pickPoint.x, pickPoint.y),
|
|
41
|
-
picked))), this.canvasRenderer.z = 0, pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
|
|
42
|
-
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
|
|
43
|
-
picked;
|
|
23
|
+
super(), this.canvasRenderer = canvasRenderer, this.type = "rect3d", this.numberType = vrender_core_1.RECT3D_NUMBER_TYPE,
|
|
24
|
+
this.themeType = "rect";
|
|
44
25
|
}
|
|
45
26
|
};
|
|
46
27
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/canvas-picker/rect3d-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/canvas-picker/rect3d-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAA8F;AAE9F,6DAAwD;AAGjD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6BAAqB;IAKlE,YAAkD,cAA8B;QAC9E,KAAK,EAAE,CAAC;QADwC,mBAAc,GAAd,cAAc,CAAgB;QAJhF,SAAI,GAAW,QAAQ,CAAC;QACxB,eAAU,GAAW,iCAAkB,CAAC;QACxC,cAAS,GAAW,MAAM,CAAC;IAI3B,CAAC;CACF,CAAA;AARY,yBAAyB;IADrC,IAAA,yBAAU,GAAE;IAME,WAAA,IAAA,qBAAM,EAAC,2BAAY,CAAC,CAAA;;GALtB,yBAAyB,CAQrC;AARY,8DAAyB","file":"rect3d-picker.js","sourcesContent":["import { inject, injectable, Rect3DRender, RECT3D_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type { IRect3d, IGraphicPicker, IGraphicRender } from '@visactor/vrender-core';\nimport { Base3dPicker } from '../common/base-3d-picker';\n\n@injectable()\nexport class DefaultCanvasRect3dPicker extends Base3dPicker<IRect3d> implements IGraphicPicker {\n type: string = 'rect3d';\n numberType: number = RECT3D_NUMBER_TYPE;\n themeType: string = 'rect';\n\n constructor(@inject(Rect3DRender) public readonly canvasRenderer: IGraphicRender) {\n super();\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IPoint } from '@visactor/vutils';
|
|
2
2
|
import type { ISymbol, IGraphicPicker, IGraphicRender, IPickParams } from '@visactor/vrender-core';
|
|
3
|
-
import {
|
|
4
|
-
export declare class DefaultCanvasSymbolPicker extends
|
|
3
|
+
import { Base3dPicker } from '../common/base-3d-picker';
|
|
4
|
+
export declare class DefaultCanvasSymbolPicker extends Base3dPicker<ISymbol> implements IGraphicPicker {
|
|
5
5
|
readonly canvasRenderer: IGraphicRender;
|
|
6
6
|
type: string;
|
|
7
7
|
numberType: number;
|
|
@@ -16,9 +16,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasSymbolPicker = void 0;
|
|
18
18
|
|
|
19
|
-
const vrender_core_1 = require("@visactor/vrender-core"),
|
|
19
|
+
const vrender_core_1 = require("@visactor/vrender-core"), base_3d_picker_1 = require("../common/base-3d-picker");
|
|
20
20
|
|
|
21
|
-
let DefaultCanvasSymbolPicker = class extends
|
|
21
|
+
let DefaultCanvasSymbolPicker = class extends base_3d_picker_1.Base3dPicker {
|
|
22
22
|
constructor(canvasRenderer) {
|
|
23
23
|
super(), this.canvasRenderer = canvasRenderer, this.type = "symbol", this.numberType = vrender_core_1.SYMBOL_NUMBER_TYPE;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/canvas-picker/symbol-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAQgC;AAYhC
|
|
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 getTheme,\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 = getTheme(symbol).symbol;\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 pickContext.lineWidth = 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"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IPoint } from '@visactor/vutils';
|
|
2
2
|
import type { IText, IGraphicPicker, IGraphicRender, IPickParams } from '@visactor/vrender-core';
|
|
3
|
-
import {
|
|
4
|
-
export declare class DefaultCanvasTextPicker extends
|
|
3
|
+
import { Base3dPicker } from '../common/base-3d-picker';
|
|
4
|
+
export declare class DefaultCanvasTextPicker extends Base3dPicker<IText> implements IGraphicPicker {
|
|
5
5
|
readonly canvasRenderer: IGraphicRender;
|
|
6
6
|
type: string;
|
|
7
7
|
numberType: number;
|
|
@@ -16,9 +16,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
16
16
|
value: !0
|
|
17
17
|
}), exports.DefaultCanvasTextPicker = void 0;
|
|
18
18
|
|
|
19
|
-
const vrender_core_1 = require("@visactor/vrender-core"),
|
|
19
|
+
const vrender_core_1 = require("@visactor/vrender-core"), base_3d_picker_1 = require("../common/base-3d-picker");
|
|
20
20
|
|
|
21
|
-
let DefaultCanvasTextPicker = class extends
|
|
21
|
+
let DefaultCanvasTextPicker = class extends base_3d_picker_1.Base3dPicker {
|
|
22
22
|
constructor(canvasRenderer) {
|
|
23
23
|
super(), this.canvasRenderer = canvasRenderer, this.type = "text", this.numberType = vrender_core_1.TEXT_NUMBER_TYPE;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/contributions/canvas-picker/text-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDASgC;AAYhC
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/canvas-picker/text-picker.ts"],"names":[],"mappings":"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","file":"text-picker.js","sourcesContent":["import {\n inject,\n injectable,\n getTheme,\n TextRender,\n textDrawOffsetX,\n textLayoutOffsetY,\n mat4Allocate,\n TEXT_NUMBER_TYPE\n} from '@visactor/vrender-core';\nimport type { IPoint } from '@visactor/vutils';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IText,\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 DefaultCanvasTextPicker extends Base3dPicker<IText> implements IGraphicPicker {\n type: string = 'text';\n numberType: number = TEXT_NUMBER_TYPE;\n\n constructor(@inject(TextRender) public readonly canvasRenderer: IGraphicRender) {\n super();\n }\n\n contains(text: IText, point: IPoint, params?: IPickParams): boolean {\n // const { textAttribute } = graphicService.themeService.getCurrentTheme();\n // const {\n // x = textAttribute.x,\n // y = textAttribute.y,\n // } = text.attribute;\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n const bounds = text.AABBBounds;\n\n if (!pickContext.camera) {\n if (!bounds.containsPoint(point)) {\n return false;\n }\n return true;\n }\n\n // const symbolAttribute = graphicService.themeService.getCurrentTheme().symbolAttribute;\n pickContext.highPerformanceSave();\n const textAttribute = getTheme(text).text;\n\n const { keepDirIn3d = textAttribute.keepDirIn3d } = text.attribute;\n // 文字如果需要变换,那就一定要计算3d矩阵\n const computed3dMatrix = !keepDirIn3d;\n\n const data = this.transform(text, textAttribute, pickContext, computed3dMatrix);\n const { x, y, z, lastModelMatrix } = data;\n\n this.canvasRenderer.z = z;\n let pickPoint = point;\n if (pickContext.camera) {\n pickPoint = point.clone();\n const globalMatrix = text.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 // 详细形状判断\n let picked = false;\n this.canvasRenderer.drawShape(\n text,\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 const {\n fontSize = textAttribute.fontSize,\n textBaseline = textAttribute.textBaseline,\n textAlign = textAttribute.textAlign\n } = text.attribute;\n // 拾取基于xy的rect\n const bounds = text.AABBBounds;\n const height = bounds.height();\n const width = bounds.width();\n const offsetY = textLayoutOffsetY(textBaseline, height, fontSize);\n const offsetX = textDrawOffsetX(textAlign, width);\n context.rect(offsetX + x, offsetY + y, width, height, z);\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 // pickContext.lineWidth = getScaledStroke(pickContext, lineWidth, pickContext.dpr);\n // picked = context.isPointInStroke(pickPoint.x, pickPoint.y);\n return picked;\n }\n );\n\n this.canvasRenderer.z = 0;\n if (pickContext.modelMatrix !== lastModelMatrix) {\n mat4Allocate.free(pickContext.modelMatrix);\n }\n pickContext.modelMatrix = lastModelMatrix;\n pickContext.highPerformanceRestore();\n\n return picked;\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseRender } from '@visactor/vrender-core';
|
|
2
|
+
import type { IGraphicAttribute, IGraphic, IPickParams, IGraphicRender } from '@visactor/vrender-core';
|
|
3
|
+
import type { IPoint } from '@visactor/vutils';
|
|
4
|
+
export declare abstract class Base3dPicker<T extends IGraphic<Partial<IGraphicAttribute>>> extends BaseRender<T> {
|
|
5
|
+
canvasRenderer: IGraphicRender;
|
|
6
|
+
themeType: string;
|
|
7
|
+
contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean;
|
|
8
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Base3dPicker = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core");
|
|
8
|
+
|
|
9
|
+
class Base3dPicker extends vrender_core_1.BaseRender {
|
|
10
|
+
contains(graphic, point, params) {
|
|
11
|
+
var _a;
|
|
12
|
+
const {pickContext: pickContext} = null != params ? params : {};
|
|
13
|
+
if (!pickContext) return !1;
|
|
14
|
+
const attribute = (0, vrender_core_1.getTheme)(graphic)[null !== (_a = this.themeType) && void 0 !== _a ? _a : graphic.type];
|
|
15
|
+
pickContext.highPerformanceSave();
|
|
16
|
+
const data = this.transform(graphic, attribute, pickContext), {x: x, y: y, z: z, lastModelMatrix: lastModelMatrix} = data;
|
|
17
|
+
let pickPoint = point;
|
|
18
|
+
if (pickContext.camera) {
|
|
19
|
+
pickPoint = point.clone();
|
|
20
|
+
const globalMatrix = graphic.parent.globalTransMatrix;
|
|
21
|
+
pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e,
|
|
22
|
+
pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;
|
|
23
|
+
}
|
|
24
|
+
this.canvasRenderer.z = z;
|
|
25
|
+
let picked = !1;
|
|
26
|
+
return this.canvasRenderer.drawShape(graphic, pickContext, x, y, params, null, ((context, arc3dAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(pickPoint.x, pickPoint.y),
|
|
27
|
+
picked))), this.canvasRenderer.z = 0, pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
|
|
28
|
+
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
|
|
29
|
+
picked;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
exports.Base3dPicker = Base3dPicker;
|
|
34
|
+
//# sourceMappingURL=base-3d-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/base-3d-picker.ts"],"names":[],"mappings":";;;AAAA,yDAA4E;AAY5E,MAAsB,YAA6D,SAAQ,yBAAa;IAKtG,QAAQ,CAAC,OAAiB,EAAE,KAAa,EAAE,MAAoB;;QAC7D,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,IAAA,uBAAQ,EAAC,OAAO,CAAC,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpE,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7D,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;QAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,OAAO,EACP,WAAW,EACX,CAAC,EACD,CAAC,EACD,MAAa,EACb,IAAI,EACJ,CACE,OAAmB,EACnB,cAA2D,EAC3D,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,CACF,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,WAAW,CAAC,WAAW,KAAK,eAAe,EAAE;YAC/C,2BAAY,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC5C;QACD,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;QAC1C,WAAW,CAAC,sBAAsB,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAxDD,oCAwDC","file":"base-3d-picker.js","sourcesContent":["import { BaseRender, 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 Base3dPicker<T extends IGraphic<Partial<IGraphicAttribute>>> extends BaseRender<T> {\n canvasRenderer!: IGraphicRender;\n\n declare themeType: string;\n\n contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean {\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n const attribute = getTheme(graphic)[this.themeType ?? graphic.type];\n\n pickContext.highPerformanceSave();\n const data = this.transform(graphic, attribute, 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 let picked = false;\n this.canvasRenderer.drawShape(\n graphic,\n pickContext,\n x,\n y,\n params as any,\n null,\n (\n context: IContext2d,\n arc3dAttribute: 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 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"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseRender } from '@visactor/vrender-core';
|
|
2
|
+
import type { IGraphicAttribute, IGraphic, IPickParams, IGraphicRender } from '@visactor/vrender-core';
|
|
3
|
+
import type { IPoint } from '@visactor/vutils';
|
|
4
|
+
export declare abstract class BaseLinePicker<T extends IGraphic<Partial<IGraphicAttribute>>> extends BaseRender<T> {
|
|
5
|
+
canvasRenderer: IGraphicRender;
|
|
6
|
+
contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.BaseLinePicker = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core");
|
|
8
|
+
|
|
9
|
+
class BaseLinePicker extends vrender_core_1.BaseRender {
|
|
10
|
+
contains(graphic, point, params) {
|
|
11
|
+
if (!graphic.AABBBounds.containsPoint(point)) return !1;
|
|
12
|
+
if ("imprecise" === graphic.attribute.pickMode) return !0;
|
|
13
|
+
const {pickContext: pickContext} = null != params ? params : {};
|
|
14
|
+
if (!pickContext) return !1;
|
|
15
|
+
pickContext.highPerformanceSave();
|
|
16
|
+
const lineAttribute = (0, vrender_core_1.getTheme)(graphic)[graphic.type], data = this.transform(graphic, lineAttribute, pickContext), {x: x, y: y, z: z, lastModelMatrix: lastModelMatrix} = data;
|
|
17
|
+
let pickPoint = point;
|
|
18
|
+
if (pickContext.camera) {
|
|
19
|
+
pickPoint = point.clone();
|
|
20
|
+
const globalMatrix = graphic.parent.globalTransMatrix;
|
|
21
|
+
pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e,
|
|
22
|
+
pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;
|
|
23
|
+
}
|
|
24
|
+
this.canvasRenderer.z = z;
|
|
25
|
+
let picked = !1;
|
|
26
|
+
return this.canvasRenderer.drawShape(graphic, pickContext, x, y, {}, null, (context => !!picked || (picked = context.isPointInPath(pickPoint.x, pickPoint.y),
|
|
27
|
+
picked)), ((context, lineAttribute, themeAttribute) => {
|
|
28
|
+
if (picked) return !0;
|
|
29
|
+
const lineWidth = lineAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = lineAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
30
|
+
return pickContext.lineWidth = (0, vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
31
|
+
picked = context.isPointInStroke(pickPoint.x, pickPoint.y), picked;
|
|
32
|
+
})), this.canvasRenderer.z = 0, pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
|
|
33
|
+
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
|
|
34
|
+
picked;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.BaseLinePicker = BaseLinePicker;
|
|
39
|
+
//# sourceMappingURL=base-line-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 = getTheme(graphic)[graphic.type];\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 pickContext.lineWidth = 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"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IPoint } from '@visactor/vutils';
|
|
2
|
+
import type { IPickParams, IGraphicRender, IGraphic } from '@visactor/vrender-core';
|
|
3
|
+
export declare abstract class PickerBase {
|
|
4
|
+
canvasRenderer: IGraphicRender;
|
|
5
|
+
contains(graphic: IGraphic, point: IPoint, params?: IPickParams): boolean;
|
|
6
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.PickerBase = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core");
|
|
8
|
+
|
|
9
|
+
class PickerBase {
|
|
10
|
+
contains(graphic, point, params) {
|
|
11
|
+
if (!graphic.AABBBounds.containsPoint(point)) return !1;
|
|
12
|
+
if ("imprecise" === graphic.attribute.pickMode) return !0;
|
|
13
|
+
const {pickContext: pickContext} = null != params ? params : {};
|
|
14
|
+
if (!pickContext) return !1;
|
|
15
|
+
const attribute = (0, vrender_core_1.getTheme)(graphic)[graphic.type];
|
|
16
|
+
pickContext.highPerformanceSave();
|
|
17
|
+
let {x: x = attribute.x, y: y = attribute.y} = graphic.attribute;
|
|
18
|
+
if (graphic.transMatrix.onlyTranslate()) {
|
|
19
|
+
const point = graphic.getOffsetXY(attribute);
|
|
20
|
+
x += point.x, y += point.y, pickContext.setTransformForCurrent();
|
|
21
|
+
} else x = 0, y = 0, pickContext.transformFromMatrix(graphic.transMatrix, !0);
|
|
22
|
+
let picked = !1;
|
|
23
|
+
return this.canvasRenderer.drawShape(graphic, pickContext, x, y, {}, null, ((context, arcAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y),
|
|
24
|
+
picked)), ((context, arcAttribute, themeAttribute) => {
|
|
25
|
+
if (picked) return !0;
|
|
26
|
+
const lineWidth = arcAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = arcAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
27
|
+
return pickContext.lineWidth = (0, vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
28
|
+
picked = context.isPointInStroke(point.x, point.y), picked;
|
|
29
|
+
})), pickContext.highPerformanceRestore(), picked;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
exports.PickerBase = PickerBase;
|
|
34
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/base.ts"],"names":[],"mappings":";;;AAAA,yDAAmE;AAYnE,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,IAAA,uBAAQ,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,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,SAAS,CAAC,CAAC;YAC7C,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;YACpG,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;AAzED,gCAyEC","file":"base.js","sourcesContent":["import { getTheme, 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} 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 = getTheme(graphic)[graphic.type];\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);\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 pickContext.lineWidth = 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"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IPoint } from '@visactor/vutils';
|
|
2
|
+
import type { IGlyph, IPickParams } from '@visactor/vrender-core';
|
|
3
|
+
export declare class GlyphPickerBase {
|
|
4
|
+
type: string;
|
|
5
|
+
numberType: number;
|
|
6
|
+
contains(glyph: IGlyph, point: IPoint, params?: IPickParams): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.GlyphPickerBase = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core");
|
|
8
|
+
|
|
9
|
+
class GlyphPickerBase {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.type = "glyph", this.numberType = vrender_core_1.GLYPH_NUMBER_TYPE;
|
|
12
|
+
}
|
|
13
|
+
contains(glyph, point, params) {
|
|
14
|
+
if (!glyph.AABBBounds.containsPoint(point)) return !1;
|
|
15
|
+
if ("imprecise" === glyph.attribute.pickMode) return !0;
|
|
16
|
+
const {pickContext: pickContext} = null != params ? params : {};
|
|
17
|
+
if (!pickContext) return !1;
|
|
18
|
+
const pickerService = null == params ? void 0 : params.pickerService;
|
|
19
|
+
if (pickerService) {
|
|
20
|
+
let picked = !1;
|
|
21
|
+
return glyph.getSubGraphic().forEach((g => {
|
|
22
|
+
if (picked) return;
|
|
23
|
+
const data = pickerService.pickItem(g, point, null, params);
|
|
24
|
+
picked = !(!data || !data.graphic);
|
|
25
|
+
})), picked;
|
|
26
|
+
}
|
|
27
|
+
return !1;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.GlyphPickerBase = GlyphPickerBase;
|
|
32
|
+
//# sourceMappingURL=glyph-picker-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/picker/contributions/common/glyph-picker-base.ts"],"names":[],"mappings":";;;AACA,yDAA2D;AAG3D,MAAa,eAAe;IAA5B;QACE,SAAI,GAAW,OAAO,CAAC;QACvB,eAAU,GAAW,gCAAiB,CAAC;IA8BzC,CAAC;IA5BC,QAAQ,CAAC,KAAa,EAAE,KAAa,EAAE,MAAoB;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC5C,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,aAAa,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC;QAC5C,IAAI,aAAa,EAAE;YAEjB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAChC,IAAI,MAAM,EAAE;oBACV,OAAO;iBACR;gBACD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5D,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhCD,0CAgCC","file":"glyph-picker-base.js","sourcesContent":["import type { IPoint } from '@visactor/vutils';\nimport { GLYPH_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type { IGlyph, IPickParams } from '@visactor/vrender-core';\n\nexport class GlyphPickerBase {\n type: string = 'glyph';\n numberType: number = GLYPH_NUMBER_TYPE;\n\n contains(glyph: IGlyph, point: IPoint, params?: IPickParams): boolean {\n if (!glyph.AABBBounds.containsPoint(point)) {\n return false;\n }\n if (glyph.attribute.pickMode === 'imprecise') {\n return true;\n }\n\n const { pickContext } = params ?? {};\n if (!pickContext) {\n return false;\n }\n\n const pickerService = params?.pickerService;\n if (pickerService) {\n // 遍历所有的子元素pick\n let picked = false;\n glyph.getSubGraphic().forEach(g => {\n if (picked) {\n return;\n }\n const data = pickerService.pickItem(g, point, null, params);\n picked = !!(data && data.graphic);\n });\n return picked;\n }\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type IContext2d, type IGraphicAttribute, type IMarkAttribute, type IThemeAttribute } from '@visactor/vrender-core';
|
|
2
|
+
import type { IPointLike } from '@visactor/vutils';
|
|
3
|
+
export declare const commonStrokeCb: (context: IContext2d, pickContext: IContext2d, symbolAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute, pickPoint: IPointLike) => boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.commonStrokeCb = void 0;
|
|
6
|
+
|
|
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 = (0, vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
10
|
+
context.isPointInStroke(pickPoint.x, pickPoint.y);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.commonStrokeCb = commonStrokeCb;
|
|
14
|
+
//# sourceMappingURL=picker-utils.js.map
|
|
@@ -0,0 +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;IACpG,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB","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 pickContext.lineWidth = getScaledStroke(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr);\n return context.isPointInStroke(pickPoint.x, pickPoint.y);\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IPoint } from '@visactor/vutils';
|
|
2
|
+
import type { IRect, IGraphicRender, IPickParams } from '@visactor/vrender-core';
|
|
3
|
+
export declare class RectPickerBase {
|
|
4
|
+
type: string;
|
|
5
|
+
numberType: number;
|
|
6
|
+
canvasRenderer: IGraphicRender;
|
|
7
|
+
contains(rect: IRect, point: IPoint, params?: IPickParams): boolean;
|
|
8
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.RectPickerBase = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), _bounds = new vutils_1.AABBBounds;
|
|
8
|
+
|
|
9
|
+
class RectPickerBase {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.type = "rect", this.numberType = vrender_core_1.RECT_NUMBER_TYPE;
|
|
12
|
+
}
|
|
13
|
+
contains(rect, point, params) {
|
|
14
|
+
if (!rect.AABBBounds.containsPoint(point)) return !1;
|
|
15
|
+
if ("imprecise" === rect.attribute.pickMode) return !0;
|
|
16
|
+
const {pickContext: pickContext} = null != params ? params : {};
|
|
17
|
+
if (!pickContext) return !1;
|
|
18
|
+
const rectAttribute = (0, vrender_core_1.getTheme)(rect).rect, {cornerRadius: cornerRadius = rectAttribute.cornerRadius} = rect.attribute;
|
|
19
|
+
let {x: x = rectAttribute.x, y: y = rectAttribute.y} = rect.attribute;
|
|
20
|
+
pickContext.highPerformanceSave();
|
|
21
|
+
let onlyTranslate = !0;
|
|
22
|
+
if (rect.transMatrix.onlyTranslate()) {
|
|
23
|
+
const point = rect.getOffsetXY(rectAttribute);
|
|
24
|
+
x += point.x, y += point.y, pickContext.setTransformForCurrent();
|
|
25
|
+
} else x = 0, y = 0, onlyTranslate = !1, pickContext.transformFromMatrix(rect.transMatrix, !0);
|
|
26
|
+
let picked = !0;
|
|
27
|
+
if (!onlyTranslate || rect.shadowRoot || (0, vutils_1.isNumber)(cornerRadius, !0) && 0 !== cornerRadius || (0,
|
|
28
|
+
vutils_1.isArray)(cornerRadius) && cornerRadius.some((num => 0 !== num))) picked = !1,
|
|
29
|
+
this.canvasRenderer.drawShape(rect, pickContext, x, y, {}, null, ((context, rectAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y),
|
|
30
|
+
picked)), ((context, rectAttribute, themeAttribute) => {
|
|
31
|
+
if (picked) return !0;
|
|
32
|
+
const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth, pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer;
|
|
33
|
+
return pickContext.lineWidth = (0, vrender_core_1.getScaledStroke)(pickContext, lineWidth + pickStrokeBuffer, pickContext.dpr),
|
|
34
|
+
picked = context.isPointInStroke(point.x, point.y), picked;
|
|
35
|
+
})); else {
|
|
36
|
+
const {fill: fill = rectAttribute.fill, stroke: stroke = rectAttribute.stroke, lineWidth: lineWidth = rectAttribute.lineWidth} = rect.attribute;
|
|
37
|
+
if (fill) picked = !0; else if (stroke) {
|
|
38
|
+
const bounds = rect.AABBBounds;
|
|
39
|
+
_bounds.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2), _bounds.expand(-lineWidth / 2),
|
|
40
|
+
picked = !_bounds.containsPoint(point);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return pickContext.highPerformanceRestore(), picked;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
exports.RectPickerBase = RectPickerBase;
|
|
48
|
+
//# sourceMappingURL=rect-picker-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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, getTheme, RECT_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IRect,\n IThemeAttribute,\n IGraphicRender,\n IPickParams\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 = getTheme(rect).rect;\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);\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 pickContext.lineWidth = 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"]}
|