@visactor/vrender 0.14.0-alpha.0 → 0.14.0-alpha.2

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 (312) hide show
  1. package/cjs/canvas/contributions/browser/canvas.d.ts +3 -1
  2. package/cjs/canvas/contributions/browser/canvas.js +6 -0
  3. package/cjs/canvas/contributions/browser/canvas.js.map +1 -1
  4. package/cjs/canvas/contributions/browser/context.d.ts +1 -0
  5. package/cjs/canvas/contributions/feishu/canvas.d.ts +3 -1
  6. package/cjs/canvas/contributions/feishu/canvas.js +6 -0
  7. package/cjs/canvas/contributions/feishu/canvas.js.map +1 -1
  8. package/cjs/canvas/contributions/lynx/canvas.d.ts +3 -1
  9. package/cjs/canvas/contributions/lynx/canvas.js +6 -0
  10. package/cjs/canvas/contributions/lynx/canvas.js.map +1 -1
  11. package/cjs/canvas/contributions/node/canvas.d.ts +2 -0
  12. package/cjs/canvas/contributions/node/canvas.js +2 -0
  13. package/cjs/canvas/contributions/node/canvas.js.map +1 -1
  14. package/cjs/canvas/contributions/taro/canvas.d.ts +3 -1
  15. package/cjs/canvas/contributions/taro/canvas.js +6 -0
  16. package/cjs/canvas/contributions/taro/canvas.js.map +1 -1
  17. package/cjs/canvas/contributions/tt/canvas.d.ts +3 -1
  18. package/cjs/canvas/contributions/tt/canvas.js +6 -0
  19. package/cjs/canvas/contributions/tt/canvas.js.map +1 -1
  20. package/cjs/canvas/contributions/wx/canvas.d.ts +2 -0
  21. package/cjs/canvas/contributions/wx/canvas.js +6 -0
  22. package/cjs/canvas/contributions/wx/canvas.js.map +1 -1
  23. package/cjs/common/render-area.d.ts +4 -0
  24. package/cjs/common/render-area.js +31 -6
  25. package/cjs/common/render-area.js.map +1 -1
  26. package/cjs/common/render-curve.d.ts +4 -0
  27. package/cjs/common/render-curve.js +19 -5
  28. package/cjs/common/render-curve.js.map +1 -1
  29. package/cjs/constants.d.ts +1 -1
  30. package/cjs/constants.js +2 -2
  31. package/cjs/constants.js.map +1 -1
  32. package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -0
  33. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +9 -3
  34. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  35. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +1 -1
  36. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  37. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +24 -0
  38. package/cjs/core/contributions/textMeasure/AtextMeasure.js +42 -0
  39. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  40. package/cjs/core/contributions/window/browser-contribution.js +1 -1
  41. package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
  42. package/cjs/core/contributions/window/feishu-contribution.js +1 -1
  43. package/cjs/core/contributions/window/feishu-contribution.js.map +1 -1
  44. package/cjs/core/contributions/window/lynx-contribution.js +1 -1
  45. package/cjs/core/contributions/window/lynx-contribution.js.map +1 -1
  46. package/cjs/core/contributions/window/native-contribution.js.map +1 -1
  47. package/cjs/core/contributions/window/node-contribution.js +1 -1
  48. package/cjs/core/contributions/window/node-contribution.js.map +1 -1
  49. package/cjs/core/contributions/window/taro-contribution.js +1 -1
  50. package/cjs/core/contributions/window/taro-contribution.js.map +1 -1
  51. package/cjs/core/contributions/window/wx-contribution.js +1 -1
  52. package/cjs/core/contributions/window/wx-contribution.js.map +1 -1
  53. package/cjs/core/core-modules.js +2 -2
  54. package/cjs/core/core-modules.js.map +1 -1
  55. package/cjs/core/global-module.d.ts +5 -1
  56. package/cjs/core/global-module.js +20 -1
  57. package/cjs/core/global-module.js.map +1 -1
  58. package/cjs/core/graphic-utils.js +1 -1
  59. package/cjs/core/graphic-utils.js.map +1 -1
  60. package/cjs/core/layer-service.js +1 -1
  61. package/cjs/core/layer-service.js.map +1 -1
  62. package/cjs/core/stage.d.ts +5 -1
  63. package/cjs/core/stage.js +18 -8
  64. package/cjs/core/stage.js.map +1 -1
  65. package/cjs/core/window.d.ts +1 -1
  66. package/cjs/core/window.js +3 -3
  67. package/cjs/core/window.js.map +1 -1
  68. package/cjs/graphic/config.d.ts +3 -1
  69. package/cjs/graphic/config.js +23 -8
  70. package/cjs/graphic/config.js.map +1 -1
  71. package/cjs/graphic/graphic-service/graphic-service.js +12 -3
  72. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  73. package/cjs/graphic/node-tree.d.ts +2 -2
  74. package/cjs/graphic/node-tree.js +2 -0
  75. package/cjs/graphic/node-tree.js.map +1 -1
  76. package/cjs/graphic/text.d.ts +5 -1
  77. package/cjs/graphic/text.js +94 -2
  78. package/cjs/graphic/text.js.map +1 -1
  79. package/cjs/graphic/tools.d.ts +8 -0
  80. package/cjs/graphic/tools.js +38 -2
  81. package/cjs/graphic/tools.js.map +1 -1
  82. package/cjs/graphic/wrap-text.js +5 -1
  83. package/cjs/graphic/wrap-text.js.map +1 -1
  84. package/cjs/index.d.ts +2 -1
  85. package/cjs/index.js +16 -2
  86. package/cjs/index.js.map +1 -1
  87. package/cjs/interface/graphic/area.d.ts +3 -3
  88. package/cjs/interface/graphic/area.js.map +1 -1
  89. package/cjs/interface/graphic/group.d.ts +6 -0
  90. package/cjs/interface/graphic/group.js.map +1 -1
  91. package/cjs/interface/graphic/line.d.ts +3 -3
  92. package/cjs/interface/graphic/line.js.map +1 -1
  93. package/cjs/interface/graphic/text.d.ts +6 -0
  94. package/cjs/interface/graphic/text.js.map +1 -1
  95. package/cjs/interface/graphic.d.ts +19 -0
  96. package/cjs/interface/graphic.js.map +1 -1
  97. package/cjs/interface/stage.d.ts +2 -0
  98. package/cjs/interface/stage.js.map +1 -1
  99. package/cjs/interface/text.d.ts +24 -0
  100. package/cjs/interface/text.js.map +1 -1
  101. package/cjs/modules.d.ts +1 -1
  102. package/cjs/modules.js +3 -3
  103. package/cjs/modules.js.map +1 -1
  104. package/cjs/picker/canvas-picker-service.js +1 -1
  105. package/cjs/picker/canvas-picker-service.js.map +1 -1
  106. package/cjs/picker/global-picker-service.js +1 -1
  107. package/cjs/picker/global-picker-service.js.map +1 -1
  108. package/cjs/picker/math-picker-service.js +1 -1
  109. package/cjs/picker/math-picker-service.js.map +1 -1
  110. package/cjs/picker/picker-service.js +1 -1
  111. package/cjs/picker/picker-service.js.map +1 -1
  112. package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +34 -0
  113. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +156 -0
  114. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -0
  115. package/cjs/render/contributions/render/arc-render.js +4 -4
  116. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  117. package/cjs/render/contributions/render/arc3d-render.js +3 -3
  118. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  119. package/cjs/render/contributions/render/area-render.d.ts +1 -0
  120. package/cjs/render/contributions/render/area-render.js +43 -16
  121. package/cjs/render/contributions/render/area-render.js.map +1 -1
  122. package/cjs/render/contributions/render/circle-render.js +3 -3
  123. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  124. package/cjs/render/contributions/render/group-render.js +4 -3
  125. package/cjs/render/contributions/render/group-render.js.map +1 -1
  126. package/cjs/render/contributions/render/image-render.js +1 -1
  127. package/cjs/render/contributions/render/image-render.js.map +1 -1
  128. package/cjs/render/contributions/render/incremental-area-render.js +1 -1
  129. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  130. package/cjs/render/contributions/render/incremental-draw-contribution.js +1 -1
  131. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  132. package/cjs/render/contributions/render/incremental-line-render.js +1 -1
  133. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  134. package/cjs/render/contributions/render/line-render.js +30 -4
  135. package/cjs/render/contributions/render/line-render.js.map +1 -1
  136. package/cjs/render/contributions/render/path-render.js +3 -3
  137. package/cjs/render/contributions/render/path-render.js.map +1 -1
  138. package/cjs/render/contributions/render/polygon-render.js +3 -3
  139. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  140. package/cjs/render/contributions/render/pyramid3d-render.js +1 -1
  141. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  142. package/cjs/render/contributions/render/rect-render.js +4 -3
  143. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  144. package/cjs/render/contributions/render/rect3d-render.js +2 -1
  145. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  146. package/cjs/render/contributions/render/richtext-render.js +1 -1
  147. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  148. package/cjs/render/contributions/render/symbol-render.js +3 -3
  149. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  150. package/cjs/render/contributions/render/text-render.js +63 -14
  151. package/cjs/render/contributions/render/text-render.js.map +1 -1
  152. package/cjs/render/contributions/render/utils.d.ts +3 -3
  153. package/cjs/render/contributions/render/utils.js +7 -7
  154. package/cjs/render/contributions/render/utils.js.map +1 -1
  155. package/dist/index.js +1107 -201
  156. package/dist/index.min.js +1 -1
  157. package/es/canvas/contributions/browser/canvas.d.ts +3 -1
  158. package/es/canvas/contributions/browser/canvas.js +6 -0
  159. package/es/canvas/contributions/browser/canvas.js.map +1 -1
  160. package/es/canvas/contributions/browser/context.d.ts +1 -0
  161. package/es/canvas/contributions/feishu/canvas.d.ts +3 -1
  162. package/es/canvas/contributions/feishu/canvas.js +6 -0
  163. package/es/canvas/contributions/feishu/canvas.js.map +1 -1
  164. package/es/canvas/contributions/lynx/canvas.d.ts +3 -1
  165. package/es/canvas/contributions/lynx/canvas.js +6 -0
  166. package/es/canvas/contributions/lynx/canvas.js.map +1 -1
  167. package/es/canvas/contributions/node/canvas.d.ts +2 -0
  168. package/es/canvas/contributions/node/canvas.js +2 -0
  169. package/es/canvas/contributions/node/canvas.js.map +1 -1
  170. package/es/canvas/contributions/taro/canvas.d.ts +3 -1
  171. package/es/canvas/contributions/taro/canvas.js +6 -0
  172. package/es/canvas/contributions/taro/canvas.js.map +1 -1
  173. package/es/canvas/contributions/tt/canvas.d.ts +3 -1
  174. package/es/canvas/contributions/tt/canvas.js +6 -0
  175. package/es/canvas/contributions/tt/canvas.js.map +1 -1
  176. package/es/canvas/contributions/wx/canvas.d.ts +2 -0
  177. package/es/canvas/contributions/wx/canvas.js +6 -0
  178. package/es/canvas/contributions/wx/canvas.js.map +1 -1
  179. package/es/common/render-area.d.ts +4 -0
  180. package/es/common/render-area.js +31 -6
  181. package/es/common/render-area.js.map +1 -1
  182. package/es/common/render-curve.d.ts +4 -0
  183. package/es/common/render-curve.js +19 -5
  184. package/es/common/render-curve.js.map +1 -1
  185. package/es/constants.d.ts +1 -1
  186. package/es/constants.js +1 -1
  187. package/es/constants.js.map +1 -1
  188. package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -0
  189. package/es/core/contributions/layerHandler/canvas2d-contribution.js +10 -4
  190. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  191. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +2 -2
  192. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  193. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +24 -0
  194. package/es/core/contributions/textMeasure/AtextMeasure.js +42 -0
  195. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  196. package/es/core/contributions/window/browser-contribution.js +2 -2
  197. package/es/core/contributions/window/browser-contribution.js.map +1 -1
  198. package/es/core/contributions/window/feishu-contribution.js +2 -2
  199. package/es/core/contributions/window/feishu-contribution.js.map +1 -1
  200. package/es/core/contributions/window/lynx-contribution.js +2 -2
  201. package/es/core/contributions/window/lynx-contribution.js.map +1 -1
  202. package/es/core/contributions/window/native-contribution.js.map +1 -1
  203. package/es/core/contributions/window/node-contribution.js +2 -2
  204. package/es/core/contributions/window/node-contribution.js.map +1 -1
  205. package/es/core/contributions/window/taro-contribution.js +2 -2
  206. package/es/core/contributions/window/taro-contribution.js.map +1 -1
  207. package/es/core/contributions/window/wx-contribution.js +2 -2
  208. package/es/core/contributions/window/wx-contribution.js.map +1 -1
  209. package/es/core/core-modules.js +4 -4
  210. package/es/core/core-modules.js.map +1 -1
  211. package/es/core/global-module.d.ts +5 -1
  212. package/es/core/global-module.js +20 -1
  213. package/es/core/global-module.js.map +1 -1
  214. package/es/core/graphic-utils.js +2 -2
  215. package/es/core/graphic-utils.js.map +1 -1
  216. package/es/core/layer-service.js +2 -2
  217. package/es/core/layer-service.js.map +1 -1
  218. package/es/core/stage.d.ts +5 -1
  219. package/es/core/stage.js +21 -9
  220. package/es/core/stage.js.map +1 -1
  221. package/es/core/window.d.ts +1 -1
  222. package/es/core/window.js +3 -3
  223. package/es/core/window.js.map +1 -1
  224. package/es/graphic/config.d.ts +3 -1
  225. package/es/graphic/config.js +24 -6
  226. package/es/graphic/config.js.map +1 -1
  227. package/es/graphic/graphic-service/graphic-service.js +12 -3
  228. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  229. package/es/graphic/node-tree.d.ts +2 -2
  230. package/es/graphic/node-tree.js +2 -0
  231. package/es/graphic/node-tree.js.map +1 -1
  232. package/es/graphic/text.d.ts +5 -1
  233. package/es/graphic/text.js +95 -1
  234. package/es/graphic/text.js.map +1 -1
  235. package/es/graphic/tools.d.ts +8 -0
  236. package/es/graphic/tools.js +38 -0
  237. package/es/graphic/tools.js.map +1 -1
  238. package/es/graphic/wrap-text.js +5 -1
  239. package/es/graphic/wrap-text.js.map +1 -1
  240. package/es/index.d.ts +2 -1
  241. package/es/index.js +3 -1
  242. package/es/index.js.map +1 -1
  243. package/es/interface/graphic/area.d.ts +3 -3
  244. package/es/interface/graphic/area.js.map +1 -1
  245. package/es/interface/graphic/group.d.ts +6 -0
  246. package/es/interface/graphic/group.js.map +1 -1
  247. package/es/interface/graphic/line.d.ts +3 -3
  248. package/es/interface/graphic/line.js.map +1 -1
  249. package/es/interface/graphic/text.d.ts +6 -0
  250. package/es/interface/graphic/text.js.map +1 -1
  251. package/es/interface/graphic.d.ts +19 -0
  252. package/es/interface/graphic.js.map +1 -1
  253. package/es/interface/stage.d.ts +2 -0
  254. package/es/interface/stage.js.map +1 -1
  255. package/es/interface/text.d.ts +24 -0
  256. package/es/interface/text.js.map +1 -1
  257. package/es/modules.d.ts +1 -1
  258. package/es/modules.js +3 -3
  259. package/es/modules.js.map +1 -1
  260. package/es/picker/canvas-picker-service.js +2 -2
  261. package/es/picker/canvas-picker-service.js.map +1 -1
  262. package/es/picker/global-picker-service.js +2 -2
  263. package/es/picker/global-picker-service.js.map +1 -1
  264. package/es/picker/math-picker-service.js +2 -2
  265. package/es/picker/math-picker-service.js.map +1 -1
  266. package/es/picker/picker-service.js +2 -2
  267. package/es/picker/picker-service.js.map +1 -1
  268. package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +34 -0
  269. package/es/plugins/builtin-plugin/flex-layout-plugin.js +152 -0
  270. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -0
  271. package/es/render/contributions/render/arc-render.js +3 -3
  272. package/es/render/contributions/render/arc-render.js.map +1 -1
  273. package/es/render/contributions/render/arc3d-render.js +2 -2
  274. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  275. package/es/render/contributions/render/area-render.d.ts +1 -0
  276. package/es/render/contributions/render/area-render.js +42 -14
  277. package/es/render/contributions/render/area-render.js.map +1 -1
  278. package/es/render/contributions/render/circle-render.js +2 -2
  279. package/es/render/contributions/render/circle-render.js.map +1 -1
  280. package/es/render/contributions/render/group-render.js +2 -2
  281. package/es/render/contributions/render/group-render.js.map +1 -1
  282. package/es/render/contributions/render/image-render.js +1 -1
  283. package/es/render/contributions/render/image-render.js.map +1 -1
  284. package/es/render/contributions/render/incremental-area-render.js +1 -1
  285. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  286. package/es/render/contributions/render/incremental-draw-contribution.js +2 -2
  287. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  288. package/es/render/contributions/render/incremental-line-render.js +1 -1
  289. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  290. package/es/render/contributions/render/line-render.js +30 -4
  291. package/es/render/contributions/render/line-render.js.map +1 -1
  292. package/es/render/contributions/render/path-render.js +2 -2
  293. package/es/render/contributions/render/path-render.js.map +1 -1
  294. package/es/render/contributions/render/polygon-render.js +2 -2
  295. package/es/render/contributions/render/polygon-render.js.map +1 -1
  296. package/es/render/contributions/render/pyramid3d-render.js +1 -1
  297. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  298. package/es/render/contributions/render/rect-render.js +2 -2
  299. package/es/render/contributions/render/rect-render.js.map +1 -1
  300. package/es/render/contributions/render/rect3d-render.js +1 -1
  301. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  302. package/es/render/contributions/render/richtext-render.js +1 -1
  303. package/es/render/contributions/render/richtext-render.js.map +1 -1
  304. package/es/render/contributions/render/symbol-render.js +2 -2
  305. package/es/render/contributions/render/symbol-render.js.map +1 -1
  306. package/es/render/contributions/render/text-render.js +65 -12
  307. package/es/render/contributions/render/text-render.js.map +1 -1
  308. package/es/render/contributions/render/utils.d.ts +3 -3
  309. package/es/render/contributions/render/utils.js +7 -7
  310. package/es/render/contributions/render/utils.js.map +1 -1
  311. package/es/tsconfig.tsbuildinfo +1 -1
  312. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/picker/global-picker-service.ts"],"names":[],"mappings":"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","file":"global-picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point } from '@visactor/vutils';\nimport { inject, injectable } from 'inversify';\nimport type {\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult\n} from '../interface';\nimport { VGlobal } from '../constants';\n\nexport const BoundsPicker = Symbol.for('BoundsPicker');\n\nexport const GlobalPickerService = Symbol.for('GlobalPickerService');\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultGlobalPickerService implements IPickerService {\n type: 'global';\n\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(PickerContribution)\n // protected readonly contributions: ContributionProvider<IPickerContribution>,\n @inject(VGlobal) public readonly global: IGlobal\n ) {\n this.global.hooks.onSetEnv.tap('global-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n }\n\n configure(global: IGlobal, env: EnvType) {\n // if (!this.global.env) return;\n // this.contributions.getContributions().forEach(handlerContribution => {\n // handlerContribution.configure(this, this.global);\n // });\n }\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPointLike, params?: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n const parentMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n let group: IGroup;\n for (let i = 0; i < graphics.length; i++) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params?: IPickParams): boolean {\n return !!this.pickItem(graphic, point, params);\n }\n\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params?: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过\n if (!insideGroup) {\n return result;\n }\n // todo: 支持带有path的group的选中\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n parentMatrix.multiply(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f);\n\n if (group.attribute.childrenPickable !== false) {\n group.forEachChildren((graphic: IGraphic) => {\n if (graphic.isContainer) {\n result = this.pickGroup(graphic as IGroup, point, parentMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n result.graphic = this.pickItem(graphic, newPoint, params);\n }\n return !!result.graphic || !!result.group;\n });\n }\n\n if (!result.graphic && !result.group && groupPicked) {\n result.group = group;\n }\n\n return result;\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, params?: IPickParams): IGraphic | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n if (graphic.AABBBounds.containsPoint(point)) {\n return graphic;\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/picker/global-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,6CAAiD;AACjD,yCAA+C;AAW/C,4CAAsC;AAEzB,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAE1C,QAAA,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAK9D,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAKrC,YAIkC,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;QAE/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC/E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;IAKvC,CAAC;IAID,IAAI,CAAC,QAAoB,EAAE,KAAiB,EAAE,MAAoB;QAChE,IAAI,MAAM,GAAe;YACvB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,eAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,KAAa,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC3B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;aAC7E;iBAAM;gBACL,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM;aACP;YACD,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;aACtB;SACF;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,OAAiB,EAAE,KAAiB,EAAE,MAAoB;QACtE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,KAAiB,EAAE,YAAqB,EAAE,MAAoB;QACrF,IAAI,MAAM,GAAe;YACvB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,EAAE;YACxC,OAAO,MAAM,CAAC;SACf;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAEtC,MAAM,QAAQ,GAAW,IAAI,cAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,MAAM,CAAC;SACf;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI,WAAW,CAAC;QAEtE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAEhH,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,KAAK,KAAK,EAAE;YAC9C,KAAK,CAAC,eAAe,CAAC,CAAC,OAAiB,EAAE,EAAE;gBAC1C,IAAI,OAAO,CAAC,WAAW,EAAE;oBACvB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;iBACzE;qBAAM;oBACL,MAAM,QAAQ,GAAW,IAAI,cAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrD,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAChD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBAC3D;gBACD,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5C,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,EAAE;YACnD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;SACtB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD,QAAQ,CAAC,OAAiB,EAAE,KAAiB,EAAE,MAAoB;QACjE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC3C,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA7GY,0BAA0B;IADtC,IAAA,sBAAU,GAAE;IAUR,WAAA,IAAA,kBAAM,EAAC,kBAAM,CAAC,CAAA;;GATN,0BAA0B,CA6GtC;AA7GY,gEAA0B","file":"global-picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point } from '@visactor/vutils';\nimport { inject, injectable } from 'inversify';\nimport type {\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult\n} from '../interface';\nimport { Global } from '../constants';\n\nexport const BoundsPicker = Symbol.for('BoundsPicker');\n\nexport const GlobalPickerService = Symbol.for('GlobalPickerService');\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultGlobalPickerService implements IPickerService {\n type: 'global';\n\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(PickerContribution)\n // protected readonly contributions: ContributionProvider<IPickerContribution>,\n @inject(Global) public readonly global: IGlobal\n ) {\n this.global.hooks.onSetEnv.tap('global-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n }\n\n configure(global: IGlobal, env: EnvType) {\n // if (!this.global.env) return;\n // this.contributions.getContributions().forEach(handlerContribution => {\n // handlerContribution.configure(this, this.global);\n // });\n }\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPointLike, params?: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n const parentMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n let group: IGroup;\n for (let i = 0; i < graphics.length; i++) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params?: IPickParams): boolean {\n return !!this.pickItem(graphic, point, params);\n }\n\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params?: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过\n if (!insideGroup) {\n return result;\n }\n // todo: 支持带有path的group的选中\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n parentMatrix.multiply(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f);\n\n if (group.attribute.childrenPickable !== false) {\n group.forEachChildren((graphic: IGraphic) => {\n if (graphic.isContainer) {\n result = this.pickGroup(graphic as IGroup, point, parentMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n result.graphic = this.pickItem(graphic, newPoint, params);\n }\n return !!result.graphic || !!result.group;\n });\n }\n\n if (!result.graphic && !result.group && groupPicked) {\n result.group = group;\n }\n\n return result;\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, params?: IPickParams): IGraphic | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n if (graphic.AABBBounds.containsPoint(point)) {\n return graphic;\n }\n return null;\n }\n}\n"]}
@@ -44,7 +44,7 @@ let DefaultMathPickerService = class extends picker_service_1.DefaultPickService
44
44
  __decorate([ (0, inversify_1.postConstruct)(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], DefaultMathPickerService.prototype, "init", null),
45
45
  DefaultMathPickerService = __decorate([ (0, inversify_1.injectable)(), __param(0, (0,
46
46
  inversify_1.inject)(contribution_provider_1.ContributionProvider)), __param(0, (0,
47
- inversify_1.named)(constants_1.MathPickerContribution)), __param(1, (0, inversify_1.inject)(constants_2.VGlobal)), __param(2, (0,
47
+ inversify_1.named)(constants_1.MathPickerContribution)), __param(1, (0, inversify_1.inject)(constants_2.Global)), __param(2, (0,
48
48
  inversify_1.inject)(contribution_provider_1.ContributionProvider)), __param(2, (0,
49
49
  inversify_1.named)(pick_interceptor_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object, Object, Object ]) ], DefaultMathPickerService),
50
50
  exports.DefaultMathPickerService = DefaultMathPickerService;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/picker/math-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,2EAAuE;AACvE,yCAAqE;AAarE,qDAAsD;AACtD,sCAA2C;AAC3C,yDAAmE;AACnE,4CAAuC;AACvC,yDAAyD;AAKlD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,mCAAkB;IAO9D,YAGqB,aAAoD,EACtC,MAAe,EAI7B,gCAAyF;QAE5G,KAAK,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAP7B,kBAAa,GAAb,aAAa,CAAuC;QACtC,WAAM,GAAN,MAAM,CAAS;QAI7B,qCAAgC,GAAhC,gCAAgC,CAAyD;QAG5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC7E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAGD,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,uBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAGD,QAAQ,CAAC,OAAiB,EAAE,KAAiB,EAAE,MAAoB;QACjE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;CACF,CAAA;AAvBC;IAAC,IAAA,yBAAa,GAAE;;;;oDAMf;AA/BU,wBAAwB;IADpC,IAAA,sBAAU,GAAE;IASR,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,kCAAsB,CAAC,CAAA;IAE7B,WAAA,IAAA,kBAAM,EAAC,mBAAO,CAAC,CAAA;IAEf,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,sCAAmB,CAAC,CAAA;;GAdlB,wBAAwB,CAgDpC;AAhDY,4DAAwB","file":"math-picker-service.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line\nimport { ContributionProvider } from '../common/contribution-provider';\nimport { inject, injectable, named, postConstruct } from 'inversify';\nimport type {\n ICanvas,\n IContext2d,\n IGraphic,\n EnvType,\n IGlobal,\n IGraphicPicker,\n IPickerService,\n IContributionProvider,\n IPickItemInterceptorContribution,\n IPickParams\n} from '../interface';\nimport { DefaultPickService } from './picker-service';\nimport { EmptyContext2d } from '../canvas';\nimport { MathPickerContribution } from './contributions/constants';\nimport { VGlobal } from '../constants';\nimport { PickItemInterceptor } from './pick-interceptor';\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultMathPickerService extends DefaultPickService implements IPickerService {\n declare type: 'default';\n // pcik canvas\n declare pickCanvas: ICanvas;\n declare pickContext: IContext2d;\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n @inject(ContributionProvider)\n @named(MathPickerContribution)\n protected readonly contributions: IContributionProvider<IGraphicPicker>,\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {\n super(global, pickItemInterceptorContributions);\n this.global.hooks.onSetEnv.tap('math-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n this.pickerMap = new Map();\n }\n\n @postConstruct()\n init() {\n this.contributions.getContributions().forEach(item => {\n this.pickerMap.set(item.numberType, item);\n });\n super._init();\n }\n\n configure(global: IGlobal, env: EnvType) {\n this.pickContext = new EmptyContext2d(null, 1);\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, params?: IPickParams): IGraphic | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker.contains(graphic, point, params) ? graphic : null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/picker/math-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,2EAAuE;AACvE,yCAAqE;AAarE,qDAAsD;AACtD,sCAA2C;AAC3C,yDAAmE;AACnE,4CAAsC;AACtC,yDAAyD;AAKlD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,mCAAkB;IAO9D,YAGqB,aAAoD,EACvC,MAAe,EAI5B,gCAAyF;QAE5G,KAAK,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAP7B,kBAAa,GAAb,aAAa,CAAuC;QACvC,WAAM,GAAN,MAAM,CAAS;QAI5B,qCAAgC,GAAhC,gCAAgC,CAAyD;QAG5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC7E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAGD,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,uBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAGD,QAAQ,CAAC,OAAiB,EAAE,KAAiB,EAAE,MAAoB;QACjE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;CACF,CAAA;AAvBC;IAAC,IAAA,yBAAa,GAAE;;;;oDAMf;AA/BU,wBAAwB;IADpC,IAAA,sBAAU,GAAE;IASR,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,kCAAsB,CAAC,CAAA;IAE7B,WAAA,IAAA,kBAAM,EAAC,kBAAM,CAAC,CAAA;IAEd,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,sCAAmB,CAAC,CAAA;;GAdlB,wBAAwB,CAgDpC;AAhDY,4DAAwB","file":"math-picker-service.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line\nimport { ContributionProvider } from '../common/contribution-provider';\nimport { inject, injectable, named, postConstruct } from 'inversify';\nimport type {\n ICanvas,\n IContext2d,\n IGraphic,\n EnvType,\n IGlobal,\n IGraphicPicker,\n IPickerService,\n IContributionProvider,\n IPickItemInterceptorContribution,\n IPickParams\n} from '../interface';\nimport { DefaultPickService } from './picker-service';\nimport { EmptyContext2d } from '../canvas';\nimport { MathPickerContribution } from './contributions/constants';\nimport { Global } from '../constants';\nimport { PickItemInterceptor } from './pick-interceptor';\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultMathPickerService extends DefaultPickService implements IPickerService {\n declare type: 'default';\n // pcik canvas\n declare pickCanvas: ICanvas;\n declare pickContext: IContext2d;\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n @inject(ContributionProvider)\n @named(MathPickerContribution)\n protected readonly contributions: IContributionProvider<IGraphicPicker>,\n @inject(Global) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {\n super(global, pickItemInterceptorContributions);\n this.global.hooks.onSetEnv.tap('math-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n this.pickerMap = new Map();\n }\n\n @postConstruct()\n init() {\n this.contributions.getContributions().forEach(item => {\n this.pickerMap.set(item.numberType, item);\n });\n super._init();\n }\n\n configure(global: IGlobal, env: EnvType) {\n this.pickContext = new EmptyContext2d(null, 1);\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, params?: IPickParams): IGraphic | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker.contains(graphic, point, params) ? graphic : null;\n }\n}\n"]}
@@ -107,7 +107,7 @@ let DefaultPickService = class {
107
107
  };
108
108
 
109
109
  DefaultPickService = __decorate([ (0, inversify_1.injectable)(), __param(0, (0,
110
- inversify_1.inject)(constants_1.VGlobal)), __param(1, (0, inversify_1.inject)(contribution_provider_1.ContributionProvider)), __param(1, (0,
110
+ inversify_1.inject)(constants_1.Global)), __param(1, (0, inversify_1.inject)(contribution_provider_1.ContributionProvider)), __param(1, (0,
111
111
  inversify_1.named)(pick_interceptor_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object, Object ]) ], DefaultPickService),
112
112
  exports.DefaultPickService = DefaultPickService;
113
113
  //# sourceMappingURL=picker-service.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point, IBounds } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { VGlobal } from '../constants';\n\nexport const GraphicPicker = Symbol.for('GraphicPicker');\n\nexport const PickerService = Symbol.for('PickerService');\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n\n constructor(\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {}\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, params);\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result as PickResult;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, params);\n result.graphic = pickedItem;\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(graphic: IGraphic, point: IPointLike, params: IPickParams): IGraphic | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point, IBounds } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { Global } from '../constants';\n\nexport const GraphicPicker = Symbol.for('GraphicPicker');\n\nexport const PickerService = Symbol.for('PickerService');\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n\n constructor(\n @inject(Global) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {}\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, params);\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result as PickResult;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, params);\n result.graphic = pickedItem;\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(graphic: IGraphic, point: IPointLike, params: IPickParams): IGraphic | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import type { IGraphic, IGroup, IGroupAttribute } from '../../interface';
2
+ import type { IPlugin, IPluginService } from '../../interface';
3
+ export declare class FlexLayoutPlugin implements IPlugin {
4
+ name: 'FlexLayoutPlugin';
5
+ activeEvent: 'onRegister';
6
+ pluginService: IPluginService;
7
+ id: number;
8
+ key: string;
9
+ tryLayout(graphic: IGraphic): void;
10
+ layoutMain(p: IGroup, children: IGraphic[], justifyContent: IGroupAttribute['justifyContent'], main: {
11
+ len: number;
12
+ field: string;
13
+ }, mianLenArray: {
14
+ mainLen: number;
15
+ crossLen: number;
16
+ }[], lastIdx: number, currSeg: {
17
+ idx: number;
18
+ mainLen: number;
19
+ crossLen: number;
20
+ }): void;
21
+ layoutCross(children: IGraphic[], alignItem: IGroupAttribute['alignItems'], cross: {
22
+ len: number;
23
+ field: string;
24
+ }, anchorPos: number, lenArray: {
25
+ mainLen: number;
26
+ crossLen: number;
27
+ }[], currSeg: {
28
+ idx: number;
29
+ mainLen: number;
30
+ crossLen: number;
31
+ }, lastIdx: number): void;
32
+ activate(context: IPluginService): void;
33
+ deactivate(context: IPluginService): void;
34
+ }
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.FlexLayoutPlugin = void 0;
6
+
7
+ const graphic_1 = require("../../graphic"), modules_1 = require("../../modules"), generator_1 = require("../../common/generator");
8
+
9
+ class FlexLayoutPlugin {
10
+ constructor() {
11
+ this.name = "FlexLayoutPlugin", this.activeEvent = "onRegister", this.id = generator_1.Generator.GenAutoIncrementId(),
12
+ this.key = this.name + this.id;
13
+ }
14
+ tryLayout(graphic) {
15
+ const p = graphic.parent;
16
+ if (!p) return;
17
+ const theme = (0, graphic_1.getTheme)(p).group, {display: display = theme.display} = p.attribute;
18
+ if ("flex" !== display) return;
19
+ const {width: width, height: height, flexDirection: flexDirection = theme.flexDirection, flexWrap: flexWrap = theme.flexWrap, justifyContent: justifyContent = theme.justifyContent, alignItems: alignItems = theme.alignItems, alignContent: alignContent = theme.alignContent} = p.attribute;
20
+ if (!width || !height) return;
21
+ const result = {
22
+ main: {
23
+ len: width,
24
+ field: "x"
25
+ },
26
+ cross: {
27
+ len: height,
28
+ field: "y"
29
+ },
30
+ dir: 1
31
+ }, main = result.main, cross = result.cross;
32
+ "row-reverse" === flexDirection ? result.dir = -1 : "column" === flexDirection ? (main.len = height,
33
+ cross.len = width, main.field = "y", cross.field = "x") : "column-reverse" === flexDirection && (main.len = height,
34
+ cross.len = width, main.field = "y", cross.field = "x", result.dir = -1);
35
+ let mainLen = 0, crossLen = 0;
36
+ const mianLenArray = [];
37
+ p.forEachChildren((c => {
38
+ const b = c.AABBBounds, ml = "x" === main.field ? b.width() : b.height(), cl = "x" === cross.field ? b.width() : b.height();
39
+ mianLenArray.push({
40
+ mainLen: ml,
41
+ crossLen: cl
42
+ }), mainLen += ml, crossLen = Math.max(crossLen, cl);
43
+ }));
44
+ const mainList = [];
45
+ if (mainLen > main.len && "wrap" === flexWrap) {
46
+ let tempMainL = 0, tempCrossL = 0;
47
+ mianLenArray.forEach((({mainLen: mainLen, crossLen: crossLen}, i) => {
48
+ tempMainL + mainLen > main.len ? 0 === tempMainL ? (mainList.push({
49
+ idx: i,
50
+ mainLen: tempMainL + mainLen,
51
+ crossLen: crossLen
52
+ }), tempMainL = 0, tempCrossL = 0) : (mainList.push({
53
+ idx: i - 1,
54
+ mainLen: tempMainL,
55
+ crossLen: crossLen
56
+ }), tempMainL = mainLen, tempCrossL = crossLen) : (tempMainL += mainLen, tempCrossL = Math.max(tempCrossL, crossLen));
57
+ })), mainList.push({
58
+ idx: mianLenArray.length - 1,
59
+ mainLen: tempMainL,
60
+ crossLen: tempCrossL
61
+ });
62
+ } else mainList.push({
63
+ idx: mianLenArray.length - 1,
64
+ mainLen: mainLen,
65
+ crossLen: crossLen
66
+ });
67
+ const children = p.getChildren();
68
+ let lastIdx = 0;
69
+ if (mainList.forEach((s => {
70
+ this.layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, s), lastIdx = s.idx + 1;
71
+ })), crossLen = mainList.reduce(((a, b) => a + b.crossLen), 0), 1 === mainList.length) {
72
+ if ("flex-end" === alignItems) {
73
+ const anchorPos = cross.len;
74
+ this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);
75
+ } else if ("center" === alignItems) {
76
+ const anchorPos = cross.len / 2;
77
+ this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);
78
+ }
79
+ } else if ("flex-start" === alignContent) {
80
+ lastIdx = 0;
81
+ let anchorPos = 0;
82
+ mainList.forEach(((s, i) => {
83
+ this.layoutCross(children, "flex-start", cross, anchorPos, mianLenArray, mainList[i], lastIdx),
84
+ lastIdx = s.idx + 1, anchorPos += s.crossLen;
85
+ }));
86
+ } else if ("center" === alignContent) {
87
+ lastIdx = 0;
88
+ let anchorPos = Math.max(0, (cross.len - crossLen) / 2);
89
+ mainList.forEach(((s, i) => {
90
+ this.layoutCross(children, "center", cross, anchorPos + s.crossLen / 2, mianLenArray, mainList[i], lastIdx),
91
+ lastIdx = s.idx + 1, anchorPos += s.crossLen;
92
+ }));
93
+ } else if ("space-around" === alignContent) {
94
+ lastIdx = 0;
95
+ const padding = Math.max(0, (cross.len - crossLen) / mainList.length / 2);
96
+ let anchorPos = padding;
97
+ mainList.forEach(((s, i) => {
98
+ this.layoutCross(children, "flex-start", cross, anchorPos, mianLenArray, mainList[i], lastIdx),
99
+ lastIdx = s.idx + 1, anchorPos += s.crossLen + 2 * padding;
100
+ }));
101
+ } else if ("space-between" === alignContent) {
102
+ lastIdx = 0;
103
+ const padding = Math.max(0, (cross.len - crossLen) / (2 * mainList.length - 2));
104
+ let anchorPos = 0;
105
+ mainList.forEach(((s, i) => {
106
+ this.layoutCross(children, "flex-start", cross, anchorPos, mianLenArray, mainList[i], lastIdx),
107
+ lastIdx = s.idx + 1, anchorPos += s.crossLen + 2 * padding;
108
+ }));
109
+ }
110
+ }
111
+ layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, currSeg) {
112
+ if ("flex-start" === justifyContent) {
113
+ let pos = 0;
114
+ for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
115
+ pos += mianLenArray[i].mainLen;
116
+ } else if ("flex-end" === justifyContent) {
117
+ let pos = main.len;
118
+ for (let i = lastIdx; i <= currSeg.idx; i++) pos -= mianLenArray[i].mainLen, children[i].attribute[main.field] = pos;
119
+ } else if ("space-around" === justifyContent) if (currSeg.mainLen >= main.len) {
120
+ let pos = 0;
121
+ for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
122
+ pos += mianLenArray[i].mainLen;
123
+ } else {
124
+ const size = currSeg.idx - lastIdx + 1, padding = (main.len - currSeg.mainLen) / size / 2;
125
+ let pos = padding;
126
+ for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
127
+ pos += mianLenArray[i].mainLen + 2 * padding;
128
+ } else if ("space-between" === justifyContent) if (currSeg.mainLen >= main.len) {
129
+ let pos = 0;
130
+ for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
131
+ pos += mianLenArray[i].mainLen;
132
+ } else {
133
+ const size = currSeg.idx - lastIdx + 1, padding = (main.len - currSeg.mainLen) / (2 * size - 2);
134
+ let pos = 0;
135
+ for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
136
+ pos += mianLenArray[i].mainLen + 2 * padding;
137
+ }
138
+ }
139
+ layoutCross(children, alignItem, cross, anchorPos, lenArray, currSeg, lastIdx) {
140
+ if ("flex-end" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen; else if ("center" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen / 2; else for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos;
141
+ }
142
+ activate(context) {
143
+ this.pluginService = context, modules_1.graphicService.hooks.onAttributeUpdate.tap(this.key, (graphic => {
144
+ graphic.glyphHost && (graphic = graphic.glyphHost), this.tryLayout(graphic);
145
+ })), modules_1.graphicService.hooks.onSetStage.tap(this.key, (graphic => {
146
+ graphic.glyphHost && (graphic = graphic.glyphHost), this.tryLayout(graphic);
147
+ }));
148
+ }
149
+ deactivate(context) {
150
+ modules_1.graphicService.hooks.onAttributeUpdate.taps = modules_1.graphicService.hooks.onAttributeUpdate.taps.filter((item => item.name !== this.key)),
151
+ modules_1.graphicService.hooks.onSetStage.taps = modules_1.graphicService.hooks.onSetStage.taps.filter((item => item.name !== this.key));
152
+ }
153
+ }
154
+
155
+ exports.FlexLayoutPlugin = FlexLayoutPlugin;
156
+ //# sourceMappingURL=flex-layout-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/plugins/builtin-plugin/flex-layout-plugin.ts"],"names":[],"mappings":"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","file":"flex-layout-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IGroupAttribute } from '../../interface';\nimport { getTheme } from '../../graphic';\nimport { graphicService } from '../../modules';\nimport type { IPlugin, IPluginService } from '../../interface';\nimport { Generator } from '../../common/generator';\n\nexport class FlexLayoutPlugin implements IPlugin {\n name: 'FlexLayoutPlugin' = 'FlexLayoutPlugin';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n id: number = Generator.GenAutoIncrementId();\n key: string = this.name + this.id;\n\n tryLayout(graphic: IGraphic) {\n const p = graphic.parent;\n if (!p) {\n return;\n }\n const theme = getTheme(p).group;\n const { display = theme.display } = p.attribute;\n if (display !== 'flex') {\n return;\n }\n const {\n width,\n height,\n flexDirection = theme.flexDirection,\n flexWrap = theme.flexWrap,\n justifyContent = theme.justifyContent,\n alignItems = theme.alignItems,\n alignContent = theme.alignContent\n } = p.attribute;\n if (!(width && height)) {\n return;\n }\n\n const result = {\n main: { len: width, field: 'x' },\n cross: { len: height, field: 'y' },\n dir: 1\n };\n const main = result.main;\n const cross = result.cross;\n if (flexDirection === 'row-reverse') {\n result.dir = -1;\n } else if (flexDirection === 'column') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n } else if (flexDirection === 'column-reverse') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n result.dir = -1;\n }\n\n // 计算宽度\n let mainLen = 0;\n let crossLen = 0;\n const mianLenArray: { mainLen: number; crossLen: number }[] = [];\n p.forEachChildren((c: IGraphic) => {\n const b = c.AABBBounds;\n const ml = main.field === 'x' ? b.width() : b.height();\n const cl = cross.field === 'x' ? b.width() : b.height();\n mianLenArray.push({ mainLen: ml, crossLen: cl });\n mainLen += ml;\n crossLen = Math.max(crossLen, cl);\n });\n // 解析main\n const mainList: { idx: number; mainLen: number; crossLen: number }[] = [];\n if (mainLen > main.len && flexWrap === 'wrap') {\n let tempMainL = 0;\n let tempCrossL = 0;\n mianLenArray.forEach(({ mainLen, crossLen }, i) => {\n if (tempMainL + mainLen > main.len) {\n if (tempMainL === 0) {\n mainList.push({ idx: i, mainLen: tempMainL + mainLen, crossLen });\n tempMainL = 0;\n tempCrossL = 0;\n } else {\n mainList.push({ idx: i - 1, mainLen: tempMainL, crossLen });\n tempMainL = mainLen;\n tempCrossL = crossLen;\n }\n } else {\n tempMainL += mainLen;\n tempCrossL = Math.max(tempCrossL, crossLen);\n }\n });\n mainList.push({ idx: mianLenArray.length - 1, mainLen: tempMainL, crossLen: tempCrossL });\n } else {\n mainList.push({ idx: mianLenArray.length - 1, mainLen: mainLen, crossLen });\n }\n\n const children = p.getChildren() as IGraphic[];\n\n // 布局main\n let lastIdx: number = 0;\n mainList.forEach(s => {\n this.layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, s);\n lastIdx = s.idx + 1;\n });\n\n crossLen = mainList.reduce((a, b) => a + b.crossLen, 0);\n\n // 布局cross\n if (mainList.length === 1) {\n if (alignItems === 'flex-end') {\n const anchorPos = cross.len;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n } else if (alignItems === 'center') {\n const anchorPos = cross.len / 2;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n }\n } else {\n if (alignContent === 'flex-start') {\n lastIdx = 0;\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'center') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'center', cross, anchorPos + s.crossLen / 2, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'space-around') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / mainList.length / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n } else if (alignContent === 'space-between') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / (mainList.length * 2 - 2));\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n }\n }\n }\n\n layoutMain(\n p: IGroup,\n children: IGraphic[],\n justifyContent: IGroupAttribute['justifyContent'],\n main: { len: number; field: string },\n mianLenArray: { mainLen: number; crossLen: number }[],\n lastIdx: number,\n currSeg: { idx: number; mainLen: number; crossLen: number }\n ) {\n if (justifyContent === 'flex-start') {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else if (justifyContent === 'flex-end') {\n let pos = main.len;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n pos -= mianLenArray[i].mainLen;\n children[i].attribute[main.field] = pos;\n }\n } else if (justifyContent === 'space-around') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / size / 2;\n let pos = padding;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n } else if (justifyContent === 'space-between') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / (size * 2 - 2);\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n }\n }\n\n layoutCross(\n children: IGraphic[],\n alignItem: IGroupAttribute['alignItems'],\n cross: { len: number; field: string },\n anchorPos: number,\n lenArray: { mainLen: number; crossLen: number }[],\n currSeg: { idx: number; mainLen: number; crossLen: number },\n lastIdx: number\n ) {\n if (alignItem === 'flex-end') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen;\n }\n } else if (alignItem === 'center') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen / 2;\n }\n } else {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos;\n }\n }\n }\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n graphicService.hooks.onAttributeUpdate.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n graphicService.hooks.onSetStage.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n }\n deactivate(context: IPluginService): void {\n graphicService.hooks.onAttributeUpdate.taps = graphicService.hooks.onAttributeUpdate.taps.filter(item => {\n return item.name !== this.key;\n });\n graphicService.hooks.onSetStage.taps = graphicService.hooks.onSetStage.taps.filter(item => {\n return item.name !== this.key;\n });\n }\n}\n"]}
@@ -83,15 +83,15 @@ let DefaultCanvasArcRender = class {
83
83
  }
84
84
  drawShape(arc, context, x, y, drawContext, params, fillCb, strokeCb) {
85
85
  const arcAttribute = (0, theme_1.getTheme)(arc, null == params ? void 0 : params.theme).arc, {fill: fill = arcAttribute.fill, background: background, stroke: stroke = arcAttribute.stroke, opacity: opacity = arcAttribute.opacity, fillOpacity: fillOpacity = arcAttribute.fillOpacity, lineWidth: lineWidth = arcAttribute.lineWidth, strokeOpacity: strokeOpacity = arcAttribute.strokeOpacity, visible: visible = arcAttribute.visible, x: originX = arcAttribute.x, y: originY = arcAttribute.y} = arc.attribute, fVisible = (0,
86
- utils_2.fillVisible)(opacity, fillOpacity), sVisible = (0, utils_2.strokeVisible)(opacity, strokeOpacity), doFill = (0,
87
- utils_2.runFill)(fill), doStroke = (0, utils_2.runStroke)(stroke, lineWidth);
86
+ utils_2.fillVisible)(opacity, fillOpacity, fill), sVisible = (0, utils_2.strokeVisible)(opacity, strokeOpacity), doFill = (0,
87
+ utils_2.runFill)(fill, background), doStroke = (0, utils_2.runStroke)(stroke, lineWidth);
88
88
  if (!arc.valid || !visible) return;
89
- if (!(doFill || doStroke || background)) return;
89
+ if (!doFill && !doStroke) return;
90
90
  if (!(fVisible || sVisible || fillCb || strokeCb || background)) return;
91
91
  const {outerRadius: outerRadius = arcAttribute.outerRadius, innerRadius: innerRadius = arcAttribute.innerRadius, cap: cap = arcAttribute.cap, forceShowCap: forceShowCap = arcAttribute.forceShowCap} = arc.attribute;
92
92
  let beforeRenderContribitionsRuned = !1;
93
93
  const {isFullStroke: isFullStroke, stroke: arrayStroke} = (0, utils_1.parseStroke)(stroke);
94
- if (doFill || isFullStroke || background) {
94
+ if (doFill || isFullStroke) {
95
95
  if (context.beginPath(), (0, utils_2.drawArcPath)(arc, context, x, y, outerRadius, innerRadius),
96
96
  !this._arcBeforeRenderContribitions) {
97
97
  this._arcBeforeRenderContribitions = [], this._arcAfterRenderContribitions = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/render/contributions/render/arc-render.ts"],"names":[],"mappings":"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","file":"arc-render.js","sourcesContent":["import { abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2 } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { getTheme } from '../../../graphic/theme';\nimport { parseStroke } from '../../../common/utils';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport type {\n IContext2d,\n IArc,\n IPath2D,\n IGraphicAttribute,\n IMarkAttribute,\n IThemeAttribute,\n IGradientColor,\n IArcRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider\n} from '../../../interface';\nimport {\n cornerTangents,\n drawArcPath,\n drawPathProxy,\n fillVisible,\n intersect,\n runFill,\n runStroke,\n strokeVisible\n} from './utils';\nimport { getConicGradientAt } from '../../../canvas/contributions/browser/conical-gradient';\nimport { ArcRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime } from '../../../common/enums';\nimport { ARC_NUMBER_TYPE } from '../../../graphic/constants';\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n@injectable()\nexport class DefaultCanvasArcRender implements IGraphicRender {\n type: 'arc';\n numberType: number = ARC_NUMBER_TYPE;\n\n protected _arcBeforeRenderContribitions: IArcRenderContribution[];\n protected _arcAfterRenderContribitions: IArcRenderContribution[];\n constructor(\n @inject(ContributionProvider)\n @named(ArcRenderContribution)\n protected readonly arcRenderContribitions: IContributionProvider<IArcRenderContribution>\n ) {}\n\n // 绘制尾部cap\n drawArcTailCapPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n _sa: number,\n _ea: number\n ) {\n const capAngle = _ea - _sa;\n const data = arc.getParsedAngle();\n const startAngle = data.startAngle;\n let endAngle = data.endAngle;\n endAngle = _ea;\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n\n const cornerRadius = arc.getParsedCornerRadius();\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadius;\n const outerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusStart = cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n const a1 = endAngle - capAngle - 0.03;\n const a2 = atan2(t1.y11, t1.x11);\n context.arc(cx, cy, outerRadius, a1, a2, !clockwise);\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n }\n } else {\n context.moveTo(cx + xors, cy + yors);\n }\n // else {\n // // Or is the outer ring just a circular arc?\n // if (!partStroke || partStroke[0]) {\n // context.moveTo(cx + xors, cy + yors);\n // context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n // } else {\n // // context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + yore);\n // }\n // }\n // // Is there no inner ring, and it’s a circular sector?\n // // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n context.lineTo(cx + xire, cy + yire);\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n const a1 = atan2(t0.cy + t0.y11, t0.cx + t0.x11);\n const a2 = endAngle - capAngle - 0.03;\n context.arc(cx, cy, innerRadius, a1, a2, clockwise);\n }\n } else {\n context.lineTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n\n return collapsedToLine;\n }\n\n drawShape(\n arc: IArc,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n const {\n fill = arcAttribute.fill,\n background,\n stroke = arcAttribute.stroke,\n opacity = arcAttribute.opacity,\n fillOpacity = arcAttribute.fillOpacity,\n lineWidth = arcAttribute.lineWidth,\n strokeOpacity = arcAttribute.strokeOpacity,\n visible = arcAttribute.visible,\n x: originX = arcAttribute.x,\n y: originY = arcAttribute.y\n } = arc.attribute;\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(arc.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke || background)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb || background)) {\n return;\n }\n\n const {\n outerRadius = arcAttribute.outerRadius,\n innerRadius = arcAttribute.innerRadius,\n cap = arcAttribute.cap,\n forceShowCap = arcAttribute.forceShowCap\n } = arc.attribute;\n\n let beforeRenderContribitionsRuned = false;\n const { isFullStroke, stroke: arrayStroke } = parseStroke(stroke);\n if (doFill || isFullStroke || background) {\n context.beginPath();\n // if (arc.shouldUpdateShape()) {\n // // 更新shape\n // arc.cache = new Path2D(context);\n // this.drawArcPath(arc, arc.cache, x, y, outerRadius, innerRadius);\n // arc.clearUpdateShapeTag();\n // } else {\n // if (arc.cache) {\n // renderCommandList(arc.cache.commandList, context);\n // }\n // }\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此arc不再使用cache\n drawArcPath(arc, context, x, y, outerRadius, innerRadius);\n\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n\n // shadow\n context.setShadowStyle && context.setShadowStyle(arc, arc.attribute, arcAttribute);\n\n if (doFill) {\n if (fillCb) {\n fillCb(context, arc.attribute, arcAttribute);\n } else if (fVisible) {\n context.setCommonStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.fill();\n }\n }\n\n if (doStroke && isFullStroke) {\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.stroke();\n }\n }\n }\n\n // 需要局部渲染描边的时候\n if (!isFullStroke && doStroke) {\n context.beginPath();\n const collapsedToLine = drawArcPath(arc, context, x, y, outerRadius, innerRadius, arrayStroke);\n\n if (!beforeRenderContribitionsRuned) {\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n context.stroke();\n }\n }\n\n // 绘制cap\n if (cap && forceShowCap) {\n const { startAngle: sa, endAngle: ea } = arc.getParsedAngle();\n const deltaAngle = abs(ea - sa);\n if (deltaAngle >= pi2 - epsilon) {\n context.beginPath();\n const capWidth = Math.abs(outerRadius - innerRadius) / 2;\n // 以外边界长度为准\n const capAngle = capWidth / outerRadius;\n const { endAngle = arcAttribute.endAngle, fill = arcAttribute.fill } = arc.attribute;\n const startAngle = endAngle;\n this.drawArcTailCapPath(arc, context, x, y, outerRadius, innerRadius, startAngle, startAngle + capAngle);\n\n if (!beforeRenderContribitionsRuned) {\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n if (doFill) {\n // 获取渐变色最后一个颜色\n const color = fill;\n if ((color as IGradientColor).gradient === 'conical') {\n const lastColor = getConicGradientAt(0, 0, endAngle, color as any);\n if (fillCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (fillVisible) {\n // context.closePath();\n context.setCommonStyle(arc, arc.attribute, x, y, arcAttribute);\n context.fillStyle = lastColor as string;\n context.fill();\n }\n }\n }\n if (doStroke) {\n if (strokeCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n // context.strokeStyle = 'red';\n context.stroke();\n }\n }\n }\n }\n\n this._arcAfterRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n\n context.highPerformanceSave();\n\n let { x = arcAttribute.x, y = arcAttribute.y } = arc.attribute;\n if (!arc.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n context.transformFromMatrix(arc.transMatrix, true);\n } else {\n const point = arc.getOffsetXY(arcAttribute);\n x += point.x;\n y += point.y;\n // 当前context有rotate/scale,重置matrix\n context.setTransformForCurrent();\n }\n\n if (drawPathProxy(arc, context, x, y, drawContext, params)) {\n context.highPerformanceRestore();\n return;\n }\n\n this.drawShape(arc, context, x, y, drawContext, params);\n\n context.highPerformanceRestore();\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/render/contributions/render/arc-render.ts"],"names":[],"mappings":"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","file":"arc-render.js","sourcesContent":["import { abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2 } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { getTheme } from '../../../graphic/theme';\nimport { parseStroke } from '../../../common/utils';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport type {\n IContext2d,\n IArc,\n IPath2D,\n IGraphicAttribute,\n IMarkAttribute,\n IThemeAttribute,\n IGradientColor,\n IArcRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider\n} from '../../../interface';\nimport {\n cornerTangents,\n drawArcPath,\n drawPathProxy,\n fillVisible,\n intersect,\n runFill,\n runStroke,\n strokeVisible\n} from './utils';\nimport { getConicGradientAt } from '../../../canvas/contributions/browser/conical-gradient';\nimport { ArcRenderContribution } from './contributions/constants';\nimport { BaseRenderContributionTime } from '../../../common/enums';\nimport { ARC_NUMBER_TYPE } from '../../../graphic/constants';\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n@injectable()\nexport class DefaultCanvasArcRender implements IGraphicRender {\n type: 'arc';\n numberType: number = ARC_NUMBER_TYPE;\n\n protected _arcBeforeRenderContribitions: IArcRenderContribution[];\n protected _arcAfterRenderContribitions: IArcRenderContribution[];\n constructor(\n @inject(ContributionProvider)\n @named(ArcRenderContribution)\n protected readonly arcRenderContribitions: IContributionProvider<IArcRenderContribution>\n ) {}\n\n // 绘制尾部cap\n drawArcTailCapPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n _sa: number,\n _ea: number\n ) {\n const capAngle = _ea - _sa;\n const data = arc.getParsedAngle();\n const startAngle = data.startAngle;\n let endAngle = data.endAngle;\n endAngle = _ea;\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n\n const cornerRadius = arc.getParsedCornerRadius();\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadius;\n const outerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusEnd = cornerRadius;\n const innerCornerRadiusStart = cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n const a1 = endAngle - capAngle - 0.03;\n const a2 = atan2(t1.y11, t1.x11);\n context.arc(cx, cy, outerRadius, a1, a2, !clockwise);\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n }\n } else {\n context.moveTo(cx + xors, cy + yors);\n }\n // else {\n // // Or is the outer ring just a circular arc?\n // if (!partStroke || partStroke[0]) {\n // context.moveTo(cx + xors, cy + yors);\n // context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n // } else {\n // // context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + yore);\n // }\n // }\n // // Is there no inner ring, and it’s a circular sector?\n // // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n context.lineTo(cx + xire, cy + yire);\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n const a1 = atan2(t0.cy + t0.y11, t0.cx + t0.x11);\n const a2 = endAngle - capAngle - 0.03;\n context.arc(cx, cy, innerRadius, a1, a2, clockwise);\n }\n } else {\n context.lineTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n\n return collapsedToLine;\n }\n\n drawShape(\n arc: IArc,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n const {\n fill = arcAttribute.fill,\n background,\n stroke = arcAttribute.stroke,\n opacity = arcAttribute.opacity,\n fillOpacity = arcAttribute.fillOpacity,\n lineWidth = arcAttribute.lineWidth,\n strokeOpacity = arcAttribute.strokeOpacity,\n visible = arcAttribute.visible,\n x: originX = arcAttribute.x,\n y: originY = arcAttribute.y\n } = arc.attribute;\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill, background);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(arc.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,以及background那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb || background)) {\n return;\n }\n\n const {\n outerRadius = arcAttribute.outerRadius,\n innerRadius = arcAttribute.innerRadius,\n cap = arcAttribute.cap,\n forceShowCap = arcAttribute.forceShowCap\n } = arc.attribute;\n let beforeRenderContribitionsRuned = false;\n const { isFullStroke, stroke: arrayStroke } = parseStroke(stroke);\n if (doFill || isFullStroke) {\n context.beginPath();\n // if (arc.shouldUpdateShape()) {\n // // 更新shape\n // arc.cache = new Path2D(context);\n // this.drawArcPath(arc, arc.cache, x, y, outerRadius, innerRadius);\n // arc.clearUpdateShapeTag();\n // } else {\n // if (arc.cache) {\n // renderCommandList(arc.cache.commandList, context);\n // }\n // }\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此arc不再使用cache\n drawArcPath(arc, context, x, y, outerRadius, innerRadius);\n\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n\n // shadow\n context.setShadowStyle && context.setShadowStyle(arc, arc.attribute, arcAttribute);\n\n if (doFill) {\n if (fillCb) {\n fillCb(context, arc.attribute, arcAttribute);\n } else if (fVisible) {\n context.setCommonStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.fill();\n }\n }\n\n if (doStroke && isFullStroke) {\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, originX - x, originY - y, arcAttribute);\n context.stroke();\n }\n }\n }\n\n // 需要局部渲染描边的时候\n if (!isFullStroke && doStroke) {\n context.beginPath();\n const collapsedToLine = drawArcPath(arc, context, x, y, outerRadius, innerRadius, arrayStroke);\n\n if (!beforeRenderContribitionsRuned) {\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n if (strokeCb) {\n strokeCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n context.stroke();\n }\n }\n\n // 绘制cap\n if (cap && forceShowCap) {\n const { startAngle: sa, endAngle: ea } = arc.getParsedAngle();\n const deltaAngle = abs(ea - sa);\n if (deltaAngle >= pi2 - epsilon) {\n context.beginPath();\n const capWidth = Math.abs(outerRadius - innerRadius) / 2;\n // 以外边界长度为准\n const capAngle = capWidth / outerRadius;\n const { endAngle = arcAttribute.endAngle, fill = arcAttribute.fill } = arc.attribute;\n const startAngle = endAngle;\n this.drawArcTailCapPath(arc, context, x, y, outerRadius, innerRadius, startAngle, startAngle + capAngle);\n\n if (!beforeRenderContribitionsRuned) {\n if (!this._arcBeforeRenderContribitions) {\n this._arcBeforeRenderContribitions = [];\n this._arcAfterRenderContribitions = [];\n const contributions = this.arcRenderContribitions.getContributions() || [];\n contributions.sort((a, b) => b.order - a.order);\n contributions.forEach(c => {\n if (c.time === BaseRenderContributionTime.beforeFillStroke) {\n this._arcBeforeRenderContribitions.push(c);\n } else {\n this._arcAfterRenderContribitions.push(c);\n }\n });\n }\n beforeRenderContribitionsRuned = true;\n this._arcBeforeRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n if (doFill) {\n // 获取渐变色最后一个颜色\n const color = fill;\n if ((color as IGradientColor).gradient === 'conical') {\n const lastColor = getConicGradientAt(0, 0, endAngle, color as any);\n if (fillCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (fillVisible) {\n // context.closePath();\n context.setCommonStyle(arc, arc.attribute, x, y, arcAttribute);\n context.fillStyle = lastColor as string;\n context.fill();\n }\n }\n }\n if (doStroke) {\n if (strokeCb) {\n // fillCb(context, arc.attribute, arcAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(arc, arc.attribute, x, y, arcAttribute);\n // context.strokeStyle = 'red';\n context.stroke();\n }\n }\n }\n }\n\n this._arcAfterRenderContribitions.forEach(c => {\n c.drawShape(\n arc,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n arcAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n });\n }\n\n draw(arc: IArc, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n\n // const arcAttribute = graphicService.themeService.getCurrentTheme().arcAttribute;\n const arcAttribute = getTheme(arc, params?.theme).arc;\n\n context.highPerformanceSave();\n\n let { x = arcAttribute.x, y = arcAttribute.y } = arc.attribute;\n if (!arc.transMatrix.onlyTranslate()) {\n // 性能较差\n x = 0;\n y = 0;\n context.transformFromMatrix(arc.transMatrix, true);\n } else {\n const point = arc.getOffsetXY(arcAttribute);\n x += point.x;\n y += point.y;\n // 当前context有rotate/scale,重置matrix\n context.setTransformForCurrent();\n }\n\n if (drawPathProxy(arc, context, x, y, drawContext, params)) {\n context.highPerformanceRestore();\n return;\n }\n\n this.drawShape(arc, context, x, y, drawContext, params);\n\n context.highPerformanceRestore();\n }\n}\n"]}
@@ -60,10 +60,10 @@ let DefaultCanvasArc3DRender = class extends base_render_1.BaseRender {
60
60
  drawShape(arc, context, x, y, drawContext, params, fillCb, strokeCb) {
61
61
  var _a;
62
62
  const arcAttribute = (0, theme_1.getTheme)(arc, null == params ? void 0 : params.theme).arc, {fill: fill = arcAttribute.fill, background: background, stroke: stroke = arcAttribute.stroke, opacity: opacity = arcAttribute.opacity, fillOpacity: fillOpacity = arcAttribute.fillOpacity, lineWidth: lineWidth = arcAttribute.lineWidth, strokeOpacity: strokeOpacity = arcAttribute.strokeOpacity, visible: visible = arcAttribute.visible} = arc.attribute, fVisible = (0,
63
- utils_1.fillVisible)(opacity, fillOpacity), sVisible = (0, utils_1.strokeVisible)(opacity, strokeOpacity), doFill = (0,
64
- utils_1.runFill)(fill), doStroke = (0, utils_1.runStroke)(stroke, lineWidth), z = null !== (_a = this.z) && void 0 !== _a ? _a : 0;
63
+ utils_1.fillVisible)(opacity, fillOpacity, fill), sVisible = (0, utils_1.strokeVisible)(opacity, strokeOpacity), doFill = (0,
64
+ utils_1.runFill)(fill, background), doStroke = (0, utils_1.runStroke)(stroke, lineWidth), z = null !== (_a = this.z) && void 0 !== _a ? _a : 0;
65
65
  if (!arc.valid || !visible) return;
66
- if (!(doFill || doStroke || background)) return;
66
+ if (!doFill && !doStroke) return;
67
67
  if (!(fVisible || sVisible || fillCb || strokeCb || background)) return;
68
68
  const {outerRadius: outerRadius = arcAttribute.outerRadius, innerRadius: innerRadius = arcAttribute.innerRadius, height: height = 10} = arc.attribute, rgbArray = color_string_1.colorString.get(fill).value, {light: light} = drawContext.stage || {}, face = drawContext.hack_pieFace, z_face = {
69
69
  top: z,