@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.
Files changed (226) hide show
  1. package/cjs/canvas/contributions/browser/context.js +2 -2
  2. package/cjs/canvas/contributions/browser/context.js.map +1 -1
  3. package/cjs/canvas/contributions/harmony/context.js +3 -3
  4. package/cjs/canvas/contributions/harmony/context.js.map +1 -1
  5. package/cjs/canvas/contributions/taro/context.js +3 -3
  6. package/cjs/canvas/contributions/taro/context.js.map +1 -1
  7. package/cjs/picker/contributions/canvas-picker/arc-picker.d.ts +3 -4
  8. package/cjs/picker/contributions/canvas-picker/arc-picker.js +3 -24
  9. package/cjs/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  10. package/cjs/picker/contributions/canvas-picker/arc3d-picker.d.ts +4 -5
  11. package/cjs/picker/contributions/canvas-picker/arc3d-picker.js +4 -23
  12. package/cjs/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  13. package/cjs/picker/contributions/canvas-picker/area-picker.d.ts +3 -4
  14. package/cjs/picker/contributions/canvas-picker/area-picker.js +3 -25
  15. package/cjs/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  16. package/cjs/picker/contributions/canvas-picker/circle-picker.d.ts +3 -4
  17. package/cjs/picker/contributions/canvas-picker/circle-picker.js +3 -23
  18. package/cjs/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  19. package/cjs/picker/contributions/canvas-picker/glyph-picker.d.ts +3 -6
  20. package/cjs/picker/contributions/canvas-picker/glyph-picker.js +3 -19
  21. package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  22. package/cjs/picker/contributions/canvas-picker/line-picker.d.ts +3 -5
  23. package/cjs/picker/contributions/canvas-picker/line-picker.js +2 -28
  24. package/cjs/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  25. package/cjs/picker/contributions/canvas-picker/path-picker.d.ts +3 -5
  26. package/cjs/picker/contributions/canvas-picker/path-picker.js +2 -29
  27. package/cjs/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  28. package/cjs/picker/contributions/canvas-picker/polygon-picker.d.ts +3 -4
  29. package/cjs/picker/contributions/canvas-picker/polygon-picker.js +3 -23
  30. package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  31. package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.d.ts +4 -5
  32. package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js +4 -24
  33. package/cjs/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  34. package/cjs/picker/contributions/canvas-picker/rect-picker.d.ts +3 -6
  35. package/cjs/picker/contributions/canvas-picker/rect-picker.js +3 -35
  36. package/cjs/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  37. package/cjs/picker/contributions/canvas-picker/rect3d-picker.d.ts +4 -5
  38. package/cjs/picker/contributions/canvas-picker/rect3d-picker.js +4 -23
  39. package/cjs/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  40. package/cjs/picker/contributions/canvas-picker/symbol-picker.d.ts +2 -2
  41. package/cjs/picker/contributions/canvas-picker/symbol-picker.js +2 -2
  42. package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  43. package/cjs/picker/contributions/canvas-picker/text-picker.d.ts +2 -2
  44. package/cjs/picker/contributions/canvas-picker/text-picker.js +2 -2
  45. package/cjs/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  46. package/cjs/picker/contributions/common/base-3d-picker.d.ts +8 -0
  47. package/cjs/picker/contributions/common/base-3d-picker.js +34 -0
  48. package/cjs/picker/contributions/common/base-3d-picker.js.map +1 -0
  49. package/cjs/picker/contributions/common/base-line-picker.d.ts +7 -0
  50. package/cjs/picker/contributions/common/base-line-picker.js +39 -0
  51. package/cjs/picker/contributions/common/base-line-picker.js.map +1 -0
  52. package/cjs/picker/contributions/common/base.d.ts +6 -0
  53. package/cjs/picker/contributions/common/base.js +34 -0
  54. package/cjs/picker/contributions/common/base.js.map +1 -0
  55. package/cjs/picker/contributions/common/glyph-picker-base.d.ts +7 -0
  56. package/cjs/picker/contributions/common/glyph-picker-base.js +32 -0
  57. package/cjs/picker/contributions/common/glyph-picker-base.js.map +1 -0
  58. package/cjs/picker/contributions/common/picker-utils.d.ts +3 -0
  59. package/cjs/picker/contributions/common/picker-utils.js +14 -0
  60. package/cjs/picker/contributions/common/picker-utils.js.map +1 -0
  61. package/cjs/picker/contributions/common/rect-picker-base.d.ts +8 -0
  62. package/cjs/picker/contributions/common/rect-picker-base.js +48 -0
  63. package/cjs/picker/contributions/common/rect-picker-base.js.map +1 -0
  64. package/cjs/picker/contributions/math-picker/arc-picker.d.ts +3 -4
  65. package/cjs/picker/contributions/math-picker/arc-picker.js +3 -24
  66. package/cjs/picker/contributions/math-picker/arc-picker.js.map +1 -1
  67. package/cjs/picker/contributions/math-picker/area-picker.d.ts +3 -4
  68. package/cjs/picker/contributions/math-picker/area-picker.js +3 -18
  69. package/cjs/picker/contributions/math-picker/area-picker.js.map +1 -1
  70. package/cjs/picker/contributions/math-picker/circle-picker.d.ts +3 -4
  71. package/cjs/picker/contributions/math-picker/circle-picker.js +3 -23
  72. package/cjs/picker/contributions/math-picker/circle-picker.js.map +1 -1
  73. package/cjs/picker/contributions/math-picker/glyph-picker.d.ts +3 -6
  74. package/cjs/picker/contributions/math-picker/glyph-picker.js +3 -17
  75. package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  76. package/cjs/picker/contributions/math-picker/line-picker.d.ts +3 -4
  77. package/cjs/picker/contributions/math-picker/line-picker.js +3 -23
  78. package/cjs/picker/contributions/math-picker/line-picker.js.map +1 -1
  79. package/cjs/picker/contributions/math-picker/path-picker.d.ts +3 -4
  80. package/cjs/picker/contributions/math-picker/path-picker.js +3 -23
  81. package/cjs/picker/contributions/math-picker/path-picker.js.map +1 -1
  82. package/cjs/picker/contributions/math-picker/polygon-picker.d.ts +3 -4
  83. package/cjs/picker/contributions/math-picker/polygon-picker.js +3 -22
  84. package/cjs/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  85. package/cjs/picker/contributions/math-picker/rect-picker.d.ts +3 -6
  86. package/cjs/picker/contributions/math-picker/rect-picker.js +3 -35
  87. package/cjs/picker/contributions/math-picker/rect-picker.js.map +1 -1
  88. package/cjs/picker/contributions/math-picker/symbol-picker.d.ts +3 -4
  89. package/cjs/picker/contributions/math-picker/symbol-picker.js +3 -23
  90. package/cjs/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  91. package/cjs/register/register-arc3d.js +1 -0
  92. package/cjs/register/register-arc3d.js.map +1 -1
  93. package/cjs/register/register-pyramid3d.js +1 -0
  94. package/cjs/register/register-pyramid3d.js.map +1 -1
  95. package/cjs/render/contributions/rough/base-render.d.ts +5 -0
  96. package/cjs/render/contributions/rough/base-render.js +14 -0
  97. package/cjs/render/contributions/rough/base-render.js.map +1 -0
  98. package/cjs/render/contributions/rough/rough-arc.d.ts +3 -3
  99. package/cjs/render/contributions/rough/rough-arc.js +4 -6
  100. package/cjs/render/contributions/rough/rough-arc.js.map +1 -1
  101. package/cjs/render/contributions/rough/rough-circle.d.ts +3 -3
  102. package/cjs/render/contributions/rough/rough-circle.js +3 -6
  103. package/cjs/render/contributions/rough/rough-circle.js.map +1 -1
  104. package/cjs/render/contributions/rough/rough-path.d.ts +3 -3
  105. package/cjs/render/contributions/rough/rough-path.js +3 -6
  106. package/cjs/render/contributions/rough/rough-path.js.map +1 -1
  107. package/cjs/render/contributions/rough/rough-rect.d.ts +3 -3
  108. package/cjs/render/contributions/rough/rough-rect.js +3 -6
  109. package/cjs/render/contributions/rough/rough-rect.js.map +1 -1
  110. package/dist/index.es.js +156 -784
  111. package/es/canvas/contributions/browser/context.js +2 -2
  112. package/es/canvas/contributions/browser/context.js.map +1 -1
  113. package/es/canvas/contributions/harmony/context.js +3 -1
  114. package/es/canvas/contributions/harmony/context.js.map +1 -1
  115. package/es/canvas/contributions/taro/context.js +3 -1
  116. package/es/canvas/contributions/taro/context.js.map +1 -1
  117. package/es/picker/contributions/canvas-picker/arc-picker.d.ts +3 -4
  118. package/es/picker/contributions/canvas-picker/arc-picker.js +5 -24
  119. package/es/picker/contributions/canvas-picker/arc-picker.js.map +1 -1
  120. package/es/picker/contributions/canvas-picker/arc3d-picker.d.ts +4 -5
  121. package/es/picker/contributions/canvas-picker/arc3d-picker.js +5 -24
  122. package/es/picker/contributions/canvas-picker/arc3d-picker.js.map +1 -1
  123. package/es/picker/contributions/canvas-picker/area-picker.d.ts +3 -4
  124. package/es/picker/contributions/canvas-picker/area-picker.js +5 -25
  125. package/es/picker/contributions/canvas-picker/area-picker.js.map +1 -1
  126. package/es/picker/contributions/canvas-picker/circle-picker.d.ts +3 -4
  127. package/es/picker/contributions/canvas-picker/circle-picker.js +5 -23
  128. package/es/picker/contributions/canvas-picker/circle-picker.js.map +1 -1
  129. package/es/picker/contributions/canvas-picker/glyph-picker.d.ts +3 -6
  130. package/es/picker/contributions/canvas-picker/glyph-picker.js +5 -19
  131. package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  132. package/es/picker/contributions/canvas-picker/line-picker.d.ts +3 -5
  133. package/es/picker/contributions/canvas-picker/line-picker.js +3 -29
  134. package/es/picker/contributions/canvas-picker/line-picker.js.map +1 -1
  135. package/es/picker/contributions/canvas-picker/path-picker.d.ts +3 -5
  136. package/es/picker/contributions/canvas-picker/path-picker.js +3 -30
  137. package/es/picker/contributions/canvas-picker/path-picker.js.map +1 -1
  138. package/es/picker/contributions/canvas-picker/polygon-picker.d.ts +3 -4
  139. package/es/picker/contributions/canvas-picker/polygon-picker.js +5 -23
  140. package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
  141. package/es/picker/contributions/canvas-picker/pyramid3d-picker.d.ts +4 -5
  142. package/es/picker/contributions/canvas-picker/pyramid3d-picker.js +5 -25
  143. package/es/picker/contributions/canvas-picker/pyramid3d-picker.js.map +1 -1
  144. package/es/picker/contributions/canvas-picker/rect-picker.d.ts +3 -6
  145. package/es/picker/contributions/canvas-picker/rect-picker.js +4 -37
  146. package/es/picker/contributions/canvas-picker/rect-picker.js.map +1 -1
  147. package/es/picker/contributions/canvas-picker/rect3d-picker.d.ts +4 -5
  148. package/es/picker/contributions/canvas-picker/rect3d-picker.js +5 -28
  149. package/es/picker/contributions/canvas-picker/rect3d-picker.js.map +1 -1
  150. package/es/picker/contributions/canvas-picker/symbol-picker.d.ts +2 -2
  151. package/es/picker/contributions/canvas-picker/symbol-picker.js +2 -2
  152. package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  153. package/es/picker/contributions/canvas-picker/text-picker.d.ts +2 -2
  154. package/es/picker/contributions/canvas-picker/text-picker.js +2 -2
  155. package/es/picker/contributions/canvas-picker/text-picker.js.map +1 -1
  156. package/es/picker/contributions/common/base-3d-picker.d.ts +8 -0
  157. package/es/picker/contributions/common/base-3d-picker.js +26 -0
  158. package/es/picker/contributions/common/base-3d-picker.js.map +1 -0
  159. package/es/picker/contributions/common/base-line-picker.d.ts +7 -0
  160. package/es/picker/contributions/common/base-line-picker.js +31 -0
  161. package/es/picker/contributions/common/base-line-picker.js.map +1 -0
  162. package/es/picker/contributions/common/base.d.ts +6 -0
  163. package/es/picker/contributions/common/base.js +26 -0
  164. package/es/picker/contributions/common/base.js.map +1 -0
  165. package/es/picker/contributions/common/glyph-picker-base.d.ts +7 -0
  166. package/es/picker/contributions/common/glyph-picker-base.js +24 -0
  167. package/es/picker/contributions/common/glyph-picker-base.js.map +1 -0
  168. package/es/picker/contributions/common/picker-utils.d.ts +3 -0
  169. package/es/picker/contributions/common/picker-utils.js +8 -0
  170. package/es/picker/contributions/common/picker-utils.js.map +1 -0
  171. package/es/picker/contributions/common/rect-picker-base.d.ts +8 -0
  172. package/es/picker/contributions/common/rect-picker-base.js +43 -0
  173. package/es/picker/contributions/common/rect-picker-base.js.map +1 -0
  174. package/es/picker/contributions/math-picker/arc-picker.d.ts +3 -4
  175. package/es/picker/contributions/math-picker/arc-picker.js +5 -24
  176. package/es/picker/contributions/math-picker/arc-picker.js.map +1 -1
  177. package/es/picker/contributions/math-picker/area-picker.d.ts +3 -4
  178. package/es/picker/contributions/math-picker/area-picker.js +5 -18
  179. package/es/picker/contributions/math-picker/area-picker.js.map +1 -1
  180. package/es/picker/contributions/math-picker/circle-picker.d.ts +3 -4
  181. package/es/picker/contributions/math-picker/circle-picker.js +5 -23
  182. package/es/picker/contributions/math-picker/circle-picker.js.map +1 -1
  183. package/es/picker/contributions/math-picker/glyph-picker.d.ts +3 -6
  184. package/es/picker/contributions/math-picker/glyph-picker.js +5 -17
  185. package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  186. package/es/picker/contributions/math-picker/line-picker.d.ts +3 -4
  187. package/es/picker/contributions/math-picker/line-picker.js +5 -23
  188. package/es/picker/contributions/math-picker/line-picker.js.map +1 -1
  189. package/es/picker/contributions/math-picker/path-picker.d.ts +3 -4
  190. package/es/picker/contributions/math-picker/path-picker.js +5 -23
  191. package/es/picker/contributions/math-picker/path-picker.js.map +1 -1
  192. package/es/picker/contributions/math-picker/polygon-picker.d.ts +3 -4
  193. package/es/picker/contributions/math-picker/polygon-picker.js +5 -22
  194. package/es/picker/contributions/math-picker/polygon-picker.js.map +1 -1
  195. package/es/picker/contributions/math-picker/rect-picker.d.ts +3 -6
  196. package/es/picker/contributions/math-picker/rect-picker.js +4 -37
  197. package/es/picker/contributions/math-picker/rect-picker.js.map +1 -1
  198. package/es/picker/contributions/math-picker/symbol-picker.d.ts +3 -4
  199. package/es/picker/contributions/math-picker/symbol-picker.js +5 -23
  200. package/es/picker/contributions/math-picker/symbol-picker.js.map +1 -1
  201. package/es/register/register-arc3d.js +3 -2
  202. package/es/register/register-arc3d.js.map +1 -1
  203. package/es/register/register-pyramid3d.js +3 -2
  204. package/es/register/register-pyramid3d.js.map +1 -1
  205. package/es/render/contributions/rough/base-render.d.ts +5 -0
  206. package/es/render/contributions/rough/base-render.js +6 -0
  207. package/es/render/contributions/rough/base-render.js.map +1 -0
  208. package/es/render/contributions/rough/rough-arc.d.ts +3 -3
  209. package/es/render/contributions/rough/rough-arc.js +5 -5
  210. package/es/render/contributions/rough/rough-arc.js.map +1 -1
  211. package/es/render/contributions/rough/rough-circle.d.ts +3 -3
  212. package/es/render/contributions/rough/rough-circle.js +4 -5
  213. package/es/render/contributions/rough/rough-circle.js.map +1 -1
  214. package/es/render/contributions/rough/rough-path.d.ts +3 -3
  215. package/es/render/contributions/rough/rough-path.js +4 -5
  216. package/es/render/contributions/rough/rough-path.js.map +1 -1
  217. package/es/render/contributions/rough/rough-rect.d.ts +3 -3
  218. package/es/render/contributions/rough/rough-rect.js +4 -5
  219. package/es/render/contributions/rough/rough-rect.js.map +1 -1
  220. package/package.json +3 -3
  221. package/cjs/picker/contributions/canvas-picker/base-picker.d.ts +0 -4
  222. package/cjs/picker/contributions/canvas-picker/base-picker.js +0 -18
  223. package/cjs/picker/contributions/canvas-picker/base-picker.js.map +0 -1
  224. package/es/picker/contributions/canvas-picker/base-picker.d.ts +0 -4
  225. package/es/picker/contributions/canvas-picker/base-picker.js +0 -14
  226. 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 vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), _bounds = new vutils_1.AABBBounds;
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, this.type = "rect", this.numberType = vrender_core_1.RECT_NUMBER_TYPE;
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":";;;;;;;;;;;;;;;AACA,6CAAiE;AACjE,yDAAqH;AAYrH,MAAM,OAAO,GAAG,IAAI,mBAAU,EAAE,CAAC;AAG1B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAIlC,YAAgD,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAH9E,SAAI,GAAW,MAAM,CAAC;QACtB,eAAU,GAAW,+BAAgB,CAAC;IAE2C,CAAC;IAElF,QAAQ,CAAC,IAAW,EAAE,KAAa,EAAE,MAAoB;QACvD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YACzC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC3C,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,MAAM,aAAa,GAAG,IAAA,uBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC1C,MAAM,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACrE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAElE,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE;YAErC,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,aAAa,GAAG,KAAK,CAAC;YACtB,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACzD;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC9C,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACb,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YAEb,WAAW,CAAC,sBAAsB,EAAE,CAAC;SACtC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,IACE,CAAC,aAAa;YACd,IAAI,CAAC,UAAU;YACf,CAAC,IAAA,iBAAQ,EAAC,YAAY,EAAE,IAAI,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC;YACpD,CAAC,IAAA,gBAAO,EAAC,YAAY,CAAC,IAAe,YAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAC1E;YAEA,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,IAAI,EACJ,WAAW,EACX,CAAC,EACD,CAAC,EACD,EAAS,EACT,IAAI,EACJ,CACE,OAAmB,EACnB,aAA0D,EAC1D,cAA+B,EAC/B,EAAE;gBAEF,IAAI,MAAM,EAAE;oBACV,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,MAAM,CAAC;YAChB,CAAC,EACD,CACE,OAAmB,EACnB,aAA0D,EAC1D,cAA+B,EAC/B,EAAE;gBAEF,IAAI,MAAM,EAAE;oBACV,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC;gBACtE,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC;gBAC3F,WAAW,CAAC,SAAS,GAAG,IAAA,8BAAe,EAAC,WAAW,EAAE,SAAS,GAAG,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBACpG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,MAAM,CAAC;YAChB,CAAC,CACF,CAAC;SACH;aAAM;YAEL,MAAM,EACJ,IAAI,GAAG,aAAa,CAAC,IAAI,EACzB,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,SAAS,GAAG,aAAa,CAAC,SAAS,EACpC,GAAG,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,IAAI,EAAE;gBACR,MAAM,GAAG,IAAI,CAAC;aACf;iBAAM,IAAI,MAAM,EAAE;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAC/B,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACxC;SACF;QAED,WAAW,CAAC,sBAAsB,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAzGY,uBAAuB;IADnC,IAAA,yBAAU,GAAE;IAKE,WAAA,IAAA,qBAAM,EAAC,yBAAU,CAAC,CAAA;;GAJpB,uBAAuB,CAyGnC;AAzGY,0DAAuB","file":"rect-picker.js","sourcesContent":["import type { IPoint } from '@visactor/vutils';\nimport { isArray, isNumber, AABBBounds } from '@visactor/vutils';\nimport { getScaledStroke, inject, injectable, getTheme, RectRender, RECT_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IRect,\n IThemeAttribute,\n IGraphicPicker,\n IGraphicRender,\n IPickParams\n} from '@visactor/vrender-core';\n\nconst _bounds = new AABBBounds();\n\n@injectable()\nexport class DefaultCanvasRectPicker implements IGraphicPicker {\n type: string = 'rect';\n numberType: number = RECT_NUMBER_TYPE;\n\n constructor(@inject(RectRender) public readonly 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"]}
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 { IPoint } from '@visactor/vutils';
2
- import type { IRect3d, IGraphicPicker, IGraphicRender, IPickParams } from '@visactor/vrender-core';
3
- import { BasePicker } from './base-picker';
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 vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), base_picker_1 = require("./base-picker"), _bounds = new vutils_1.AABBBounds;
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 base_picker_1.BasePicker {
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":";;;;;;;;;;;;;;;AACA,6CAA8C;AAC9C,yDAAsH;AAWtH,+CAA2C;AAE3C,MAAM,OAAO,GAAG,IAAI,mBAAU,EAAE,CAAC;AAG1B,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,wBAAmB;IAIhE,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,IAAa,EAAE,KAAa,EAAE,MAAoB;QAQzD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAGD,MAAM,aAAa,GAAG,IAAA,uBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAE1C,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAC9D,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,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACnD,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,IAAI,EACJ,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,CAeF,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,CAAA;AAjFY,yBAAyB;IADrC,IAAA,yBAAU,GAAE;IAKE,WAAA,IAAA,qBAAM,EAAC,2BAAY,CAAC,CAAA;;GAJtB,yBAAyB,CAiFrC;AAjFY,8DAAyB","file":"rect3d-picker.js","sourcesContent":["import type { IPoint } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport { inject, injectable, getTheme, mat4Allocate, Rect3DRender, RECT3D_NUMBER_TYPE } from '@visactor/vrender-core';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n IRect3d,\n IThemeAttribute,\n IGraphicPicker,\n IGraphicRender,\n IPickParams\n} from '@visactor/vrender-core';\nimport { BasePicker } from './base-picker';\n\nconst _bounds = new AABBBounds();\n\n@injectable()\nexport class DefaultCanvasRect3dPicker extends BasePicker<IRect3d> implements IGraphicPicker {\n type: string = 'rect3d';\n numberType: number = RECT3D_NUMBER_TYPE;\n\n constructor(@inject(Rect3DRender) public readonly canvasRenderer: IGraphicRender) {\n super();\n }\n\n contains(rect: IRect3d, 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\n pickContext.highPerformanceSave();\n const data = this.transform(rect, rectAttribute, pickContext);\n const { x, y, z, lastModelMatrix } = data;\n\n let pickPoint = point;\n if (pickContext.camera) {\n pickPoint = point.clone();\n const globalMatrix = rect.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 rect,\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 // context: IContext2d,\n // arc3dAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n // themeAttribute: IThemeAttribute\n // ) => {\n // // 选中后面就不需要再走逻辑了\n // if (picked) {\n // return true;\n // }\n // const lineWidth = arc3dAttribute.lineWidth || themeAttribute.lineWidth;\n // pickContext.lineWidth = getScaledStroke(pickContext, lineWidth, pickContext.dpr);\n // picked = context.isPointInStroke(point.x, point.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"]}
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 { BasePicker } from './base-picker';
4
- export declare class DefaultCanvasSymbolPicker extends BasePicker<ISymbol> implements IGraphicPicker {
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"), base_picker_1 = require("./base-picker");
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 base_picker_1.BasePicker {
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,+CAA2C;AAGpC,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,wBAAmB;IAIhE,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,IAAA,uBAAQ,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAEhD,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;YACpG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,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,CAAA;AAtGY,yBAAyB;IADrC,IAAA,yBAAU,GAAE;IAKE,WAAA,IAAA,qBAAM,EAAC,2BAAY,CAAC,CAAA;;GAJtB,yBAAyB,CAsGrC;AAtGY,8DAAyB","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 { BasePicker } from './base-picker';\n\n@injectable()\nexport class DefaultCanvasSymbolPicker extends BasePicker<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
+ {"version":3,"sources":["../src/picker/contributions/canvas-picker/symbol-picker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAQgC;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,IAAA,uBAAQ,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAEhD,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;YACpG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,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,CAAA;AAtGY,yBAAyB;IADrC,IAAA,yBAAU,GAAE;IAKE,WAAA,IAAA,qBAAM,EAAC,2BAAY,CAAC,CAAA;;GAJtB,yBAAyB,CAsGrC;AAtGY,8DAAyB","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 { BasePicker } from './base-picker';
4
- export declare class DefaultCanvasTextPicker extends BasePicker<IText> implements IGraphicPicker {
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"), base_picker_1 = require("./base-picker");
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 base_picker_1.BasePicker {
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":"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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 { BasePicker } from './base-picker';\n\n@injectable()\nexport class DefaultCanvasTextPicker extends BasePicker<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"]}
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"]}