@visactor/vrender-core 0.19.4-alpha.4 → 0.19.4

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 (776) hide show
  1. package/cjs/allocator/allocator-modules.js +0 -2
  2. package/cjs/allocator/bounds-allocate.js +1 -1
  3. package/cjs/allocator/bounds-allocate.js.map +1 -1
  4. package/cjs/allocator/canvas-allocate.js +11 -9
  5. package/cjs/allocator/canvas-allocate.js.map +1 -1
  6. package/cjs/allocator/graphic-allocate.js +5 -9
  7. package/cjs/allocator/graphic-allocate.js.map +1 -1
  8. package/cjs/allocator/matrix-allocate.js +2 -6
  9. package/cjs/allocator/matrix-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +25 -14
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/animate.js +8 -7
  13. package/cjs/animate/animate.js.map +1 -1
  14. package/cjs/animate/config.js +1 -2
  15. package/cjs/animate/custom-animate.js +54 -51
  16. package/cjs/animate/custom-animate.js.map +1 -1
  17. package/cjs/animate/easing.js +19 -8
  18. package/cjs/animate/easing.js.map +1 -1
  19. package/cjs/animate/morphing.js +20 -23
  20. package/cjs/animate/morphing.js.map +1 -1
  21. package/cjs/application.js +7 -1
  22. package/cjs/application.js.map +1 -1
  23. package/cjs/canvas/conical-gradient.js +12 -5
  24. package/cjs/canvas/conical-gradient.js.map +1 -1
  25. package/cjs/canvas/contributions/base-canvas.js +19 -7
  26. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  27. package/cjs/color-string/interpolate.js +5 -3
  28. package/cjs/color-string/interpolate.js.map +1 -1
  29. package/cjs/color-string/store.js +3 -1
  30. package/cjs/color-string/store.js.map +1 -1
  31. package/cjs/common/bounds-context.js +1 -0
  32. package/cjs/common/bounds-context.js.map +1 -1
  33. package/cjs/common/canvas-utils.js +3 -6
  34. package/cjs/common/canvas-utils.js.map +1 -1
  35. package/cjs/common/contribution-provider.js +3 -0
  36. package/cjs/common/contribution-provider.js.map +1 -1
  37. package/cjs/common/custom-path2d.js +7 -1
  38. package/cjs/common/custom-path2d.js.map +1 -1
  39. package/cjs/common/generator.js +2 -1
  40. package/cjs/common/generator.js.map +1 -1
  41. package/cjs/common/inversify/binding.js +12 -0
  42. package/cjs/common/inversify/binding.js.map +1 -1
  43. package/cjs/common/inversify/container.js +4 -0
  44. package/cjs/common/inversify/container.js.map +1 -1
  45. package/cjs/common/inversify/cotainer-module.js +2 -0
  46. package/cjs/common/inversify/cotainer-module.js.map +1 -1
  47. package/cjs/common/inversify/meta-data.js +2 -0
  48. package/cjs/common/inversify/meta-data.js.map +1 -1
  49. package/cjs/common/inversify/syntax/binding_in_syntax.js +1 -0
  50. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  51. package/cjs/common/inversify/syntax/binding_to_syntax.js +1 -0
  52. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  53. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  54. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  55. package/cjs/common/inversify-lite/bindings/binding.js +14 -0
  56. package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
  57. package/cjs/common/inversify-lite/container/container.js +22 -46
  58. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  59. package/cjs/common/inversify-lite/container/container_module.js +4 -0
  60. package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
  61. package/cjs/common/inversify-lite/container/lookup.js +1 -0
  62. package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
  63. package/cjs/common/inversify-lite/planning/context.js +4 -0
  64. package/cjs/common/inversify-lite/planning/context.js.map +1 -1
  65. package/cjs/common/inversify-lite/planning/metadata.js +2 -0
  66. package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
  67. package/cjs/common/inversify-lite/planning/plan.js +2 -0
  68. package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
  69. package/cjs/common/inversify-lite/planning/queryable_string.js +1 -0
  70. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  71. package/cjs/common/inversify-lite/planning/request.js +8 -0
  72. package/cjs/common/inversify-lite/planning/request.js.map +1 -1
  73. package/cjs/common/inversify-lite/planning/target.js +7 -0
  74. package/cjs/common/inversify-lite/planning/target.js.map +1 -1
  75. package/cjs/common/inversify-lite/resolution/instantiation.js +16 -42
  76. package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
  77. package/cjs/common/inversify-lite/scope/scope.js +3 -29
  78. package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
  79. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  80. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  81. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  82. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  83. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  84. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  85. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  86. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  87. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  88. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  89. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  90. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  91. package/cjs/common/polygon.js +1 -2
  92. package/cjs/common/polygon.js.map +1 -1
  93. package/cjs/common/render-area.js +2 -3
  94. package/cjs/common/render-area.js.map +1 -1
  95. package/cjs/common/render-curve.js +4 -8
  96. package/cjs/common/render-curve.js.map +1 -1
  97. package/cjs/common/seg-context.js +12 -3
  98. package/cjs/common/seg-context.js.map +1 -1
  99. package/cjs/common/segment/basis.js +13 -0
  100. package/cjs/common/segment/basis.js.map +1 -1
  101. package/cjs/common/segment/common.js +2 -2
  102. package/cjs/common/segment/common.js.map +1 -1
  103. package/cjs/common/segment/curve/arc.js +2 -2
  104. package/cjs/common/segment/curve/arc.js.map +1 -1
  105. package/cjs/common/segment/curve/base.js +4 -0
  106. package/cjs/common/segment/curve/base.js.map +1 -1
  107. package/cjs/common/segment/curve/cubic-bezier.js +2 -2
  108. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  109. package/cjs/common/segment/curve/curve-context.js +4 -0
  110. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  111. package/cjs/common/segment/curve/ellipse.js +3 -3
  112. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  113. package/cjs/common/segment/curve/line.js +2 -1
  114. package/cjs/common/segment/curve/line.js.map +1 -1
  115. package/cjs/common/segment/curve/move.js +2 -1
  116. package/cjs/common/segment/curve/move.js.map +1 -1
  117. package/cjs/common/segment/curve/path.js +2 -0
  118. package/cjs/common/segment/curve/path.js.map +1 -1
  119. package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
  120. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  121. package/cjs/common/segment/linear-closed.js.map +1 -1
  122. package/cjs/common/segment/linear.js +10 -0
  123. package/cjs/common/segment/linear.js.map +1 -1
  124. package/cjs/common/segment/monotone.js +13 -0
  125. package/cjs/common/segment/monotone.js.map +1 -1
  126. package/cjs/common/segment/step.js +13 -2
  127. package/cjs/common/segment/step.js.map +1 -1
  128. package/cjs/common/sort.js +3 -34
  129. package/cjs/common/sort.js.map +1 -1
  130. package/cjs/common/split-path.js +4 -11
  131. package/cjs/common/split-path.js.map +1 -1
  132. package/cjs/common/utils.d.ts +1 -1
  133. package/cjs/common/utils.js +10 -6
  134. package/cjs/common/utils.js.map +1 -1
  135. package/cjs/common/xml/parser.js +3 -2
  136. package/cjs/common/xml/parser.js.map +1 -1
  137. package/cjs/core/camera.js +11 -4
  138. package/cjs/core/camera.js.map +1 -1
  139. package/cjs/core/contributions/env/base-contribution.js +6 -0
  140. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  141. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  142. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  143. package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
  144. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  145. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  146. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  147. package/cjs/core/contributions/textMeasure/AtextMeasure.js +11 -8
  148. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  149. package/cjs/core/contributions/textMeasure/layout.js +3 -0
  150. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  151. package/cjs/core/contributions/window/base-contribution.js +2 -0
  152. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  153. package/cjs/core/global.js +8 -0
  154. package/cjs/core/global.js.map +1 -1
  155. package/cjs/core/graphic-utils.js +16 -5
  156. package/cjs/core/graphic-utils.js.map +1 -1
  157. package/cjs/core/layer-service.js +7 -7
  158. package/cjs/core/layer-service.js.map +1 -1
  159. package/cjs/core/layer.js +7 -9
  160. package/cjs/core/layer.js.map +1 -1
  161. package/cjs/core/stage.js +79 -35
  162. package/cjs/core/stage.js.map +1 -1
  163. package/cjs/core/window.js +16 -13
  164. package/cjs/core/window.js.map +1 -1
  165. package/cjs/event/event-manager.js +152 -143
  166. package/cjs/event/event-manager.js.map +1 -1
  167. package/cjs/event/event-system.js +60 -43
  168. package/cjs/event/event-system.js.map +1 -1
  169. package/cjs/event/event-target.js +1 -3
  170. package/cjs/event/event-target.js.map +1 -1
  171. package/cjs/event/federated-event/base-event.js +43 -15
  172. package/cjs/event/federated-event/base-event.js.map +1 -1
  173. package/cjs/event/federated-event/mouse-event.js +27 -18
  174. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  175. package/cjs/event/federated-event/pointer-event.js +13 -8
  176. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  177. package/cjs/event/federated-event/wheel-event.js +14 -10
  178. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  179. package/cjs/graphic/arc.js +10 -5
  180. package/cjs/graphic/arc.js.map +1 -1
  181. package/cjs/graphic/arc3d.js +7 -4
  182. package/cjs/graphic/arc3d.js.map +1 -1
  183. package/cjs/graphic/area.js +14 -9
  184. package/cjs/graphic/area.js.map +1 -1
  185. package/cjs/graphic/builtin-symbol/arrow.js +2 -3
  186. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  187. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -3
  188. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  189. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -3
  190. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  191. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -3
  192. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  193. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -3
  194. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  195. package/cjs/graphic/builtin-symbol/circle.js +2 -3
  196. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  197. package/cjs/graphic/builtin-symbol/close.js +2 -3
  198. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  199. package/cjs/graphic/builtin-symbol/cross.js +2 -3
  200. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  201. package/cjs/graphic/builtin-symbol/diamond.js +2 -3
  202. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  203. package/cjs/graphic/builtin-symbol/line-h.js +2 -3
  204. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  205. package/cjs/graphic/builtin-symbol/line-v.js +2 -3
  206. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  207. package/cjs/graphic/builtin-symbol/rect.js +2 -3
  208. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  209. package/cjs/graphic/builtin-symbol/square.js +2 -3
  210. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  211. package/cjs/graphic/builtin-symbol/star.js +2 -3
  212. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  213. package/cjs/graphic/builtin-symbol/stroke.js +2 -3
  214. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  215. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -3
  216. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  217. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -3
  218. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  219. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -3
  220. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  221. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -3
  222. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  223. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -3
  224. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  225. package/cjs/graphic/builtin-symbol/triangle.js +1 -3
  226. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  227. package/cjs/graphic/builtin-symbol/utils.js +6 -1
  228. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  229. package/cjs/graphic/builtin-symbol/wedge.js +2 -3
  230. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  231. package/cjs/graphic/builtin-symbol/wye.js +2 -3
  232. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  233. package/cjs/graphic/circle.js +8 -6
  234. package/cjs/graphic/circle.js.map +1 -1
  235. package/cjs/graphic/config.js +59 -32
  236. package/cjs/graphic/config.js.map +1 -1
  237. package/cjs/graphic/glyph.js +10 -9
  238. package/cjs/graphic/glyph.js.map +1 -1
  239. package/cjs/graphic/graphic-service/graphic-service.js +12 -8
  240. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  241. package/cjs/graphic/graphic.d.ts +1 -0
  242. package/cjs/graphic/graphic.js +32 -42
  243. package/cjs/graphic/graphic.js.map +1 -1
  244. package/cjs/graphic/group.js +9 -5
  245. package/cjs/graphic/group.js.map +1 -1
  246. package/cjs/graphic/image.js +18 -16
  247. package/cjs/graphic/image.js.map +1 -1
  248. package/cjs/graphic/line.js +11 -6
  249. package/cjs/graphic/line.js.map +1 -1
  250. package/cjs/graphic/node-tree.js +25 -44
  251. package/cjs/graphic/node-tree.js.map +1 -1
  252. package/cjs/graphic/path.js +12 -6
  253. package/cjs/graphic/path.js.map +1 -1
  254. package/cjs/graphic/polygon.js +7 -4
  255. package/cjs/graphic/polygon.js.map +1 -1
  256. package/cjs/graphic/pyramid3d.js +4 -3
  257. package/cjs/graphic/pyramid3d.js.map +1 -1
  258. package/cjs/graphic/rect.js +7 -3
  259. package/cjs/graphic/rect.js.map +1 -1
  260. package/cjs/graphic/rect3d.js +5 -4
  261. package/cjs/graphic/rect3d.js.map +1 -1
  262. package/cjs/graphic/richtext/frame.js +19 -0
  263. package/cjs/graphic/richtext/frame.js.map +1 -1
  264. package/cjs/graphic/richtext/icon.js +14 -6
  265. package/cjs/graphic/richtext/icon.js.map +1 -1
  266. package/cjs/graphic/richtext/line.js +14 -2
  267. package/cjs/graphic/richtext/line.js.map +1 -1
  268. package/cjs/graphic/richtext/paragraph.js +22 -0
  269. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  270. package/cjs/graphic/richtext/utils.js +1 -2
  271. package/cjs/graphic/richtext/utils.js.map +1 -1
  272. package/cjs/graphic/richtext/wrapper.js +12 -0
  273. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  274. package/cjs/graphic/richtext.js +38 -45
  275. package/cjs/graphic/richtext.js.map +1 -1
  276. package/cjs/graphic/shadow-root.js +2 -1
  277. package/cjs/graphic/shadow-root.js.map +1 -1
  278. package/cjs/graphic/symbol.js +12 -5
  279. package/cjs/graphic/symbol.js.map +1 -1
  280. package/cjs/graphic/text.js +45 -45
  281. package/cjs/graphic/text.js.map +1 -1
  282. package/cjs/graphic/theme.js +4 -0
  283. package/cjs/graphic/theme.js.map +1 -1
  284. package/cjs/graphic/tools.js +16 -44
  285. package/cjs/graphic/tools.js.map +1 -1
  286. package/cjs/graphic/wrap-text.js +7 -7
  287. package/cjs/graphic/wrap-text.js.map +1 -1
  288. package/cjs/interface/global.d.ts +2 -1
  289. package/cjs/interface/global.js.map +1 -1
  290. package/cjs/interface/graphic.d.ts +1 -0
  291. package/cjs/interface/graphic.js.map +1 -1
  292. package/cjs/picker/global-picker-service.js +1 -0
  293. package/cjs/picker/global-picker-service.js.map +1 -1
  294. package/cjs/picker/pick-interceptor.js +5 -15
  295. package/cjs/picker/pick-interceptor.js.map +1 -1
  296. package/cjs/picker/picker-service.js +5 -5
  297. package/cjs/picker/picker-service.js.map +1 -1
  298. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  299. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  300. package/cjs/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  301. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  302. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  303. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  304. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  305. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  306. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +28 -19
  307. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  308. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  309. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  310. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +6 -7
  311. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  312. package/cjs/plugins/plugin-service.js +1 -0
  313. package/cjs/plugins/plugin-service.js.map +1 -1
  314. package/cjs/render/contributions/render/arc-render.js +6 -4
  315. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  316. package/cjs/render/contributions/render/arc3d-render.js +5 -7
  317. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  318. package/cjs/render/contributions/render/area-render.js +21 -23
  319. package/cjs/render/contributions/render/area-render.js.map +1 -1
  320. package/cjs/render/contributions/render/base-render.js +5 -0
  321. package/cjs/render/contributions/render/base-render.js.map +1 -1
  322. package/cjs/render/contributions/render/circle-render.js +6 -4
  323. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  324. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +3 -4
  325. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  326. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +6 -9
  327. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  328. package/cjs/render/contributions/render/contributions/base-contribution-render.js +10 -8
  329. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  330. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +4 -4
  331. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  332. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -4
  333. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  334. package/cjs/render/contributions/render/contributions/group-contribution-render.js +1 -3
  335. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  336. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -3
  337. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  338. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -14
  339. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  340. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -4
  341. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  342. package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -8
  343. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  344. package/cjs/render/contributions/render/draw-contribution.js +12 -14
  345. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  346. package/cjs/render/contributions/render/draw-interceptor.js +11 -21
  347. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  348. package/cjs/render/contributions/render/glyph-render.js +2 -3
  349. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  350. package/cjs/render/contributions/render/graphic-render.js +4 -1
  351. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  352. package/cjs/render/contributions/render/group-render.js +7 -3
  353. package/cjs/render/contributions/render/group-render.js.map +1 -1
  354. package/cjs/render/contributions/render/image-render.js +4 -2
  355. package/cjs/render/contributions/render/image-render.js.map +1 -1
  356. package/cjs/render/contributions/render/incremental-area-render.js +1 -3
  357. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  358. package/cjs/render/contributions/render/incremental-draw-contribution.js +80 -109
  359. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  360. package/cjs/render/contributions/render/incremental-line-render.js +1 -3
  361. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  362. package/cjs/render/contributions/render/line-render.js +12 -16
  363. package/cjs/render/contributions/render/line-render.js.map +1 -1
  364. package/cjs/render/contributions/render/path-render.js +8 -7
  365. package/cjs/render/contributions/render/path-render.js.map +1 -1
  366. package/cjs/render/contributions/render/polygon-render.js +6 -4
  367. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  368. package/cjs/render/contributions/render/pyramid3d-render.js +3 -5
  369. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  370. package/cjs/render/contributions/render/rect-render.js +8 -7
  371. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  372. package/cjs/render/contributions/render/rect3d-render.js +5 -7
  373. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  374. package/cjs/render/contributions/render/richtext-render.js +4 -3
  375. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  376. package/cjs/render/contributions/render/symbol-render.js +11 -14
  377. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  378. package/cjs/render/contributions/render/text-render.js +8 -8
  379. package/cjs/render/contributions/render/text-render.js.map +1 -1
  380. package/cjs/render/contributions/render/utils.js +1 -1
  381. package/cjs/render/contributions/render/utils.js.map +1 -1
  382. package/cjs/render/render-service.js +11 -2
  383. package/cjs/render/render-service.js.map +1 -1
  384. package/cjs/resource-loader/loader.js +13 -16
  385. package/cjs/resource-loader/loader.js.map +1 -1
  386. package/cjs/tapable/Hook.js +3 -0
  387. package/cjs/tapable/Hook.js.map +1 -1
  388. package/dist/index.es.js +28908 -0
  389. package/es/allocator/allocator-modules.js +0 -2
  390. package/es/allocator/bounds-allocate.js +1 -1
  391. package/es/allocator/bounds-allocate.js.map +1 -1
  392. package/es/allocator/canvas-allocate.js +11 -9
  393. package/es/allocator/canvas-allocate.js.map +1 -1
  394. package/es/allocator/graphic-allocate.js +5 -9
  395. package/es/allocator/graphic-allocate.js.map +1 -1
  396. package/es/allocator/matrix-allocate.js +2 -6
  397. package/es/allocator/matrix-allocate.js.map +1 -1
  398. package/es/animate/Ticker/default-ticker.js +25 -14
  399. package/es/animate/Ticker/default-ticker.js.map +1 -1
  400. package/es/animate/animate.js +7 -8
  401. package/es/animate/animate.js.map +1 -1
  402. package/es/animate/config.js +1 -2
  403. package/es/animate/custom-animate.js +52 -50
  404. package/es/animate/custom-animate.js.map +1 -1
  405. package/es/animate/easing.js +18 -8
  406. package/es/animate/easing.js.map +1 -1
  407. package/es/animate/morphing.js +20 -23
  408. package/es/animate/morphing.js.map +1 -1
  409. package/es/application.js +7 -1
  410. package/es/application.js.map +1 -1
  411. package/es/canvas/conical-gradient.js +12 -6
  412. package/es/canvas/conical-gradient.js.map +1 -1
  413. package/es/canvas/contributions/base-canvas.js +19 -7
  414. package/es/canvas/contributions/base-canvas.js.map +1 -1
  415. package/es/color-string/interpolate.js +5 -3
  416. package/es/color-string/interpolate.js.map +1 -1
  417. package/es/color-string/store.js +2 -2
  418. package/es/color-string/store.js.map +1 -1
  419. package/es/common/bounds-context.js +1 -0
  420. package/es/common/bounds-context.js.map +1 -1
  421. package/es/common/canvas-utils.js +3 -6
  422. package/es/common/canvas-utils.js.map +1 -1
  423. package/es/common/contribution-provider.js +3 -0
  424. package/es/common/contribution-provider.js.map +1 -1
  425. package/es/common/custom-path2d.js +7 -1
  426. package/es/common/custom-path2d.js.map +1 -1
  427. package/es/common/generator.js +1 -2
  428. package/es/common/generator.js.map +1 -1
  429. package/es/common/inversify/binding.js +12 -0
  430. package/es/common/inversify/binding.js.map +1 -1
  431. package/es/common/inversify/container.js +4 -0
  432. package/es/common/inversify/container.js.map +1 -1
  433. package/es/common/inversify/cotainer-module.js +2 -0
  434. package/es/common/inversify/cotainer-module.js.map +1 -1
  435. package/es/common/inversify/meta-data.js +2 -0
  436. package/es/common/inversify/meta-data.js.map +1 -1
  437. package/es/common/inversify/syntax/binding_in_syntax.js +1 -0
  438. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  439. package/es/common/inversify/syntax/binding_to_syntax.js +1 -0
  440. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  441. package/es/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  442. package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  443. package/es/common/inversify-lite/bindings/binding.js +14 -0
  444. package/es/common/inversify-lite/bindings/binding.js.map +1 -1
  445. package/es/common/inversify-lite/container/container.js +22 -48
  446. package/es/common/inversify-lite/container/container.js.map +1 -1
  447. package/es/common/inversify-lite/container/container_module.js +4 -0
  448. package/es/common/inversify-lite/container/container_module.js.map +1 -1
  449. package/es/common/inversify-lite/container/lookup.js +1 -0
  450. package/es/common/inversify-lite/container/lookup.js.map +1 -1
  451. package/es/common/inversify-lite/planning/context.js +4 -0
  452. package/es/common/inversify-lite/planning/context.js.map +1 -1
  453. package/es/common/inversify-lite/planning/metadata.js +2 -0
  454. package/es/common/inversify-lite/planning/metadata.js.map +1 -1
  455. package/es/common/inversify-lite/planning/plan.js +2 -0
  456. package/es/common/inversify-lite/planning/plan.js.map +1 -1
  457. package/es/common/inversify-lite/planning/queryable_string.js +1 -0
  458. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  459. package/es/common/inversify-lite/planning/request.js +8 -0
  460. package/es/common/inversify-lite/planning/request.js.map +1 -1
  461. package/es/common/inversify-lite/planning/target.js +7 -0
  462. package/es/common/inversify-lite/planning/target.js.map +1 -1
  463. package/es/common/inversify-lite/resolution/instantiation.js +16 -44
  464. package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
  465. package/es/common/inversify-lite/scope/scope.js +3 -29
  466. package/es/common/inversify-lite/scope/scope.js.map +1 -1
  467. package/es/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  468. package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  469. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  470. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  471. package/es/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  472. package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  473. package/es/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  474. package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  475. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  476. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  477. package/es/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  478. package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  479. package/es/common/polygon.js +1 -2
  480. package/es/common/polygon.js.map +1 -1
  481. package/es/common/render-area.js +2 -3
  482. package/es/common/render-area.js.map +1 -1
  483. package/es/common/render-curve.js +4 -8
  484. package/es/common/render-curve.js.map +1 -1
  485. package/es/common/seg-context.js +12 -3
  486. package/es/common/seg-context.js.map +1 -1
  487. package/es/common/segment/basis.js +13 -0
  488. package/es/common/segment/basis.js.map +1 -1
  489. package/es/common/segment/common.js +1 -1
  490. package/es/common/segment/common.js.map +1 -1
  491. package/es/common/segment/curve/arc.js +2 -1
  492. package/es/common/segment/curve/arc.js.map +1 -1
  493. package/es/common/segment/curve/base.js +4 -0
  494. package/es/common/segment/curve/base.js.map +1 -1
  495. package/es/common/segment/curve/cubic-bezier.js +2 -2
  496. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  497. package/es/common/segment/curve/curve-context.js +4 -0
  498. package/es/common/segment/curve/curve-context.js.map +1 -1
  499. package/es/common/segment/curve/ellipse.js +3 -3
  500. package/es/common/segment/curve/ellipse.js.map +1 -1
  501. package/es/common/segment/curve/line.js +2 -1
  502. package/es/common/segment/curve/line.js.map +1 -1
  503. package/es/common/segment/curve/move.js +2 -1
  504. package/es/common/segment/curve/move.js.map +1 -1
  505. package/es/common/segment/curve/path.js +2 -0
  506. package/es/common/segment/curve/path.js.map +1 -1
  507. package/es/common/segment/curve/quadratic-bezier.js +2 -2
  508. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  509. package/es/common/segment/linear-closed.js.map +1 -1
  510. package/es/common/segment/linear.js +10 -0
  511. package/es/common/segment/linear.js.map +1 -1
  512. package/es/common/segment/monotone.js +13 -0
  513. package/es/common/segment/monotone.js.map +1 -1
  514. package/es/common/segment/step.js +12 -1
  515. package/es/common/segment/step.js.map +1 -1
  516. package/es/common/sort.js +3 -34
  517. package/es/common/sort.js.map +1 -1
  518. package/es/common/split-path.js +4 -11
  519. package/es/common/split-path.js.map +1 -1
  520. package/es/common/utils.d.ts +1 -1
  521. package/es/common/utils.js +9 -7
  522. package/es/common/utils.js.map +1 -1
  523. package/es/common/xml/parser.js +2 -2
  524. package/es/common/xml/parser.js.map +1 -1
  525. package/es/core/camera.js +11 -4
  526. package/es/core/camera.js.map +1 -1
  527. package/es/core/contributions/env/base-contribution.js +6 -0
  528. package/es/core/contributions/env/base-contribution.js.map +1 -1
  529. package/es/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  530. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  531. package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
  532. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  533. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  534. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  535. package/es/core/contributions/textMeasure/AtextMeasure.js +11 -8
  536. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  537. package/es/core/contributions/textMeasure/layout.js +3 -0
  538. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  539. package/es/core/contributions/window/base-contribution.js +2 -0
  540. package/es/core/contributions/window/base-contribution.js.map +1 -1
  541. package/es/core/global.js +8 -0
  542. package/es/core/global.js.map +1 -1
  543. package/es/core/graphic-utils.js +16 -5
  544. package/es/core/graphic-utils.js.map +1 -1
  545. package/es/core/layer-service.js +7 -7
  546. package/es/core/layer-service.js.map +1 -1
  547. package/es/core/layer.js +7 -9
  548. package/es/core/layer.js.map +1 -1
  549. package/es/core/stage.js +79 -35
  550. package/es/core/stage.js.map +1 -1
  551. package/es/core/window.js +16 -14
  552. package/es/core/window.js.map +1 -1
  553. package/es/event/event-manager.js +152 -143
  554. package/es/event/event-manager.js.map +1 -1
  555. package/es/event/event-system.js +60 -43
  556. package/es/event/event-system.js.map +1 -1
  557. package/es/event/event-target.js +1 -3
  558. package/es/event/event-target.js.map +1 -1
  559. package/es/event/federated-event/base-event.js +43 -15
  560. package/es/event/federated-event/base-event.js.map +1 -1
  561. package/es/event/federated-event/mouse-event.js +27 -18
  562. package/es/event/federated-event/mouse-event.js.map +1 -1
  563. package/es/event/federated-event/pointer-event.js +13 -8
  564. package/es/event/federated-event/pointer-event.js.map +1 -1
  565. package/es/event/federated-event/wheel-event.js +13 -11
  566. package/es/event/federated-event/wheel-event.js.map +1 -1
  567. package/es/graphic/arc.js +9 -6
  568. package/es/graphic/arc.js.map +1 -1
  569. package/es/graphic/arc3d.js +6 -5
  570. package/es/graphic/arc3d.js.map +1 -1
  571. package/es/graphic/area.js +13 -10
  572. package/es/graphic/area.js.map +1 -1
  573. package/es/graphic/builtin-symbol/arrow.js +2 -3
  574. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  575. package/es/graphic/builtin-symbol/arrow2-down.js +2 -3
  576. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  577. package/es/graphic/builtin-symbol/arrow2-left.js +2 -3
  578. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  579. package/es/graphic/builtin-symbol/arrow2-right.js +2 -3
  580. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  581. package/es/graphic/builtin-symbol/arrow2-up.js +2 -3
  582. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  583. package/es/graphic/builtin-symbol/circle.js +2 -3
  584. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  585. package/es/graphic/builtin-symbol/close.js +2 -3
  586. package/es/graphic/builtin-symbol/close.js.map +1 -1
  587. package/es/graphic/builtin-symbol/cross.js +2 -3
  588. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  589. package/es/graphic/builtin-symbol/diamond.js +2 -3
  590. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  591. package/es/graphic/builtin-symbol/line-h.js +2 -3
  592. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  593. package/es/graphic/builtin-symbol/line-v.js +2 -3
  594. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  595. package/es/graphic/builtin-symbol/rect.js +2 -3
  596. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  597. package/es/graphic/builtin-symbol/square.js +2 -3
  598. package/es/graphic/builtin-symbol/square.js.map +1 -1
  599. package/es/graphic/builtin-symbol/star.js +2 -3
  600. package/es/graphic/builtin-symbol/star.js.map +1 -1
  601. package/es/graphic/builtin-symbol/stroke.js +2 -3
  602. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  603. package/es/graphic/builtin-symbol/thin-triangle.js +2 -3
  604. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  605. package/es/graphic/builtin-symbol/triangle-down.js +2 -3
  606. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  607. package/es/graphic/builtin-symbol/triangle-left.js +2 -3
  608. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  609. package/es/graphic/builtin-symbol/triangle-right.js +2 -3
  610. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  611. package/es/graphic/builtin-symbol/triangle-up.js +2 -3
  612. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  613. package/es/graphic/builtin-symbol/triangle.js +1 -3
  614. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  615. package/es/graphic/builtin-symbol/utils.js +6 -2
  616. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  617. package/es/graphic/builtin-symbol/wedge.js +2 -3
  618. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  619. package/es/graphic/builtin-symbol/wye.js +2 -3
  620. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  621. package/es/graphic/circle.js +7 -6
  622. package/es/graphic/circle.js.map +1 -1
  623. package/es/graphic/config.js +73 -44
  624. package/es/graphic/config.js.map +1 -1
  625. package/es/graphic/glyph.js +9 -9
  626. package/es/graphic/glyph.js.map +1 -1
  627. package/es/graphic/graphic-service/graphic-service.js +12 -8
  628. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  629. package/es/graphic/graphic.d.ts +1 -0
  630. package/es/graphic/graphic.js +32 -42
  631. package/es/graphic/graphic.js.map +1 -1
  632. package/es/graphic/group.js +8 -5
  633. package/es/graphic/group.js.map +1 -1
  634. package/es/graphic/image.js +17 -16
  635. package/es/graphic/image.js.map +1 -1
  636. package/es/graphic/line.js +10 -7
  637. package/es/graphic/line.js.map +1 -1
  638. package/es/graphic/node-tree.js +25 -44
  639. package/es/graphic/node-tree.js.map +1 -1
  640. package/es/graphic/path.js +11 -7
  641. package/es/graphic/path.js.map +1 -1
  642. package/es/graphic/polygon.js +6 -4
  643. package/es/graphic/polygon.js.map +1 -1
  644. package/es/graphic/pyramid3d.js +3 -3
  645. package/es/graphic/pyramid3d.js.map +1 -1
  646. package/es/graphic/rect.js +6 -4
  647. package/es/graphic/rect.js.map +1 -1
  648. package/es/graphic/rect3d.js +4 -4
  649. package/es/graphic/rect3d.js.map +1 -1
  650. package/es/graphic/richtext/frame.js +19 -0
  651. package/es/graphic/richtext/frame.js.map +1 -1
  652. package/es/graphic/richtext/icon.js +14 -6
  653. package/es/graphic/richtext/icon.js.map +1 -1
  654. package/es/graphic/richtext/line.js +14 -2
  655. package/es/graphic/richtext/line.js.map +1 -1
  656. package/es/graphic/richtext/paragraph.js +22 -0
  657. package/es/graphic/richtext/paragraph.js.map +1 -1
  658. package/es/graphic/richtext/utils.js +1 -2
  659. package/es/graphic/richtext/utils.js.map +1 -1
  660. package/es/graphic/richtext/wrapper.js +12 -0
  661. package/es/graphic/richtext/wrapper.js.map +1 -1
  662. package/es/graphic/richtext.js +37 -46
  663. package/es/graphic/richtext.js.map +1 -1
  664. package/es/graphic/shadow-root.js +2 -1
  665. package/es/graphic/shadow-root.js.map +1 -1
  666. package/es/graphic/symbol.js +11 -6
  667. package/es/graphic/symbol.js.map +1 -1
  668. package/es/graphic/text.js +39 -40
  669. package/es/graphic/text.js.map +1 -1
  670. package/es/graphic/theme.js +4 -0
  671. package/es/graphic/theme.js.map +1 -1
  672. package/es/graphic/tools.js +16 -44
  673. package/es/graphic/tools.js.map +1 -1
  674. package/es/graphic/wrap-text.js +6 -6
  675. package/es/graphic/wrap-text.js.map +1 -1
  676. package/es/interface/global.d.ts +2 -1
  677. package/es/interface/global.js.map +1 -1
  678. package/es/interface/graphic.d.ts +1 -0
  679. package/es/interface/graphic.js.map +1 -1
  680. package/es/picker/global-picker-service.js +1 -0
  681. package/es/picker/global-picker-service.js.map +1 -1
  682. package/es/picker/pick-interceptor.js +5 -15
  683. package/es/picker/pick-interceptor.js.map +1 -1
  684. package/es/picker/picker-service.js +5 -5
  685. package/es/picker/picker-service.js.map +1 -1
  686. package/es/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  687. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  688. package/es/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  689. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  690. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  691. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  692. package/es/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  693. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  694. package/es/plugins/builtin-plugin/html-attribute-plugin.js +28 -17
  695. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  696. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  697. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  698. package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
  699. package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  700. package/es/plugins/plugin-service.js +1 -0
  701. package/es/plugins/plugin-service.js.map +1 -1
  702. package/es/render/contributions/render/arc-render.js +6 -4
  703. package/es/render/contributions/render/arc-render.js.map +1 -1
  704. package/es/render/contributions/render/arc3d-render.js +5 -7
  705. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  706. package/es/render/contributions/render/area-render.js +21 -23
  707. package/es/render/contributions/render/area-render.js.map +1 -1
  708. package/es/render/contributions/render/base-render.js +5 -0
  709. package/es/render/contributions/render/base-render.js.map +1 -1
  710. package/es/render/contributions/render/circle-render.js +6 -4
  711. package/es/render/contributions/render/circle-render.js.map +1 -1
  712. package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
  713. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  714. package/es/render/contributions/render/contributions/area-texture-contribution-render.js +2 -5
  715. package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  716. package/es/render/contributions/render/contributions/base-contribution-render.js +10 -7
  717. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  718. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +4 -3
  719. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
  721. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  722. package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
  723. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  724. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
  725. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
  727. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  728. package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
  729. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  730. package/es/render/contributions/render/contributions/text-contribution-render.js +6 -8
  731. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  732. package/es/render/contributions/render/draw-contribution.js +12 -14
  733. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  734. package/es/render/contributions/render/draw-interceptor.js +11 -21
  735. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  736. package/es/render/contributions/render/glyph-render.js +2 -3
  737. package/es/render/contributions/render/glyph-render.js.map +1 -1
  738. package/es/render/contributions/render/graphic-render.js +4 -1
  739. package/es/render/contributions/render/graphic-render.js.map +1 -1
  740. package/es/render/contributions/render/group-render.js +7 -3
  741. package/es/render/contributions/render/group-render.js.map +1 -1
  742. package/es/render/contributions/render/image-render.js +5 -2
  743. package/es/render/contributions/render/image-render.js.map +1 -1
  744. package/es/render/contributions/render/incremental-area-render.js +1 -3
  745. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  746. package/es/render/contributions/render/incremental-draw-contribution.js +80 -109
  747. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  748. package/es/render/contributions/render/incremental-line-render.js +1 -3
  749. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  750. package/es/render/contributions/render/line-render.js +12 -16
  751. package/es/render/contributions/render/line-render.js.map +1 -1
  752. package/es/render/contributions/render/path-render.js +8 -6
  753. package/es/render/contributions/render/path-render.js.map +1 -1
  754. package/es/render/contributions/render/polygon-render.js +6 -4
  755. package/es/render/contributions/render/polygon-render.js.map +1 -1
  756. package/es/render/contributions/render/pyramid3d-render.js +3 -5
  757. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  758. package/es/render/contributions/render/rect-render.js +8 -6
  759. package/es/render/contributions/render/rect-render.js.map +1 -1
  760. package/es/render/contributions/render/rect3d-render.js +5 -7
  761. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  762. package/es/render/contributions/render/richtext-render.js +4 -3
  763. package/es/render/contributions/render/richtext-render.js.map +1 -1
  764. package/es/render/contributions/render/symbol-render.js +11 -14
  765. package/es/render/contributions/render/symbol-render.js.map +1 -1
  766. package/es/render/contributions/render/text-render.js +9 -8
  767. package/es/render/contributions/render/text-render.js.map +1 -1
  768. package/es/render/contributions/render/utils.js +1 -1
  769. package/es/render/contributions/render/utils.js.map +1 -1
  770. package/es/render/render-service.js +11 -2
  771. package/es/render/render-service.js.map +1 -1
  772. package/es/resource-loader/loader.js +12 -17
  773. package/es/resource-loader/loader.js.map +1 -1
  774. package/es/tapable/Hook.js +3 -0
  775. package/es/tapable/Hook.js.map +1 -1
  776. package/package.json +1 -1
@@ -10,30 +10,6 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
10
10
  return function(target, key) {
11
11
  decorator(target, key, paramIndex);
12
12
  };
13
- }, __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
14
- return new (P || (P = Promise))((function(resolve, reject) {
15
- function fulfilled(value) {
16
- try {
17
- step(generator.next(value));
18
- } catch (e) {
19
- reject(e);
20
- }
21
- }
22
- function rejected(value) {
23
- try {
24
- step(generator.throw(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- }
29
- function step(result) {
30
- var value;
31
- result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
32
- resolve(value);
33
- }))).then(fulfilled, rejected);
34
- }
35
- step((generator = generator.apply(thisArg, _arguments || [])).next());
36
- }));
37
13
  };
38
14
 
39
15
  Object.defineProperty(exports, "__esModule", {
@@ -49,106 +25,101 @@ var STATUS;
49
25
  }(STATUS || (STATUS = {}));
50
26
 
51
27
  let DefaultIncrementalDrawContribution = class extends draw_contribution_1.DefaultDrawContribution {
28
+ contributions;
29
+ lineRender;
30
+ areaRender;
31
+ drawItemInterceptorContributions;
32
+ rendering=!1;
33
+ currFrameStartAt=0;
34
+ currentIdx=0;
35
+ status=STATUS.NORMAL;
36
+ checkingForDrawPromise=null;
37
+ hooks={
38
+ completeDraw: new tapable_1.SyncHook([])
39
+ };
40
+ lastRenderService;
41
+ lastDrawContext;
42
+ count;
52
43
  constructor(contributions, lineRender, areaRender, drawItemInterceptorContributions) {
53
44
  super(contributions, drawItemInterceptorContributions), this.contributions = contributions,
54
45
  this.lineRender = lineRender, this.areaRender = areaRender, this.drawItemInterceptorContributions = drawItemInterceptorContributions,
55
- this.rendering = !1, this.currFrameStartAt = 0, this.currentIdx = 0, this.status = STATUS.NORMAL,
56
- this.checkingForDrawPromise = null, this.hooks = {
57
- completeDraw: new tapable_1.SyncHook([])
58
- }, this.defaultRenderMap.set(this.lineRender.numberType, this.lineRender), this.defaultRenderMap.set(this.areaRender.numberType, this.areaRender);
46
+ this.defaultRenderMap.set(this.lineRender.numberType, this.lineRender), this.defaultRenderMap.set(this.areaRender.numberType, this.areaRender);
59
47
  }
60
- draw(renderService, drawContext) {
61
- return __awaiter(this, void 0, void 0, (function*() {
62
- if (this.checkingForDrawPromise) return;
63
- this.lastRenderService = renderService, this.lastDrawContext = drawContext, this.checkingForDrawPromise = this.checkForDraw(drawContext);
64
- const skipDraw = yield this.checkingForDrawPromise;
65
- if (this.checkingForDrawPromise = null, skipDraw) return;
66
- this.currentRenderService = renderService;
67
- const {context: context, viewBox: viewBox} = drawContext;
68
- context && (context.inuse = !0, context.clearMatrix(), context.setTransformForCurrent(!0),
69
- context.save(), drawContext.restartIncremental && this.clearScreen(this.currentRenderService, context, drawContext),
70
- context.translate(viewBox.x1, viewBox.y1, !0), context.save(), renderService.renderTreeRoots.sort(((a, b) => {
71
- var _a, _b;
72
- return (null !== (_a = a.attribute.zIndex) && void 0 !== _a ? _a : graphic_1.DefaultAttribute.zIndex) - (null !== (_b = b.attribute.zIndex) && void 0 !== _b ? _b : graphic_1.DefaultAttribute.zIndex);
73
- })).forEach((group => {
74
- this.renderGroup(group, drawContext);
75
- })), this.hooks.completeDraw.tap("top-draw", (() => {
76
- context.restore(), context.restore(), context.draw(), context.inuse = !1, this.rendering = !1;
77
- })));
78
- }));
48
+ async draw(renderService, drawContext) {
49
+ if (this.checkingForDrawPromise) return;
50
+ this.lastRenderService = renderService, this.lastDrawContext = drawContext, this.checkingForDrawPromise = this.checkForDraw(drawContext);
51
+ const skipDraw = await this.checkingForDrawPromise;
52
+ if (this.checkingForDrawPromise = null, skipDraw) return;
53
+ this.currentRenderService = renderService;
54
+ const {context: context, viewBox: viewBox} = drawContext;
55
+ context && (context.inuse = !0, context.clearMatrix(), context.setTransformForCurrent(!0),
56
+ context.save(), drawContext.restartIncremental && this.clearScreen(this.currentRenderService, context, drawContext),
57
+ context.translate(viewBox.x1, viewBox.y1, !0), context.save(), renderService.renderTreeRoots.sort(((a, b) => (a.attribute.zIndex ?? graphic_1.DefaultAttribute.zIndex) - (b.attribute.zIndex ?? graphic_1.DefaultAttribute.zIndex))).forEach((group => {
58
+ this.renderGroup(group, drawContext);
59
+ })), this.hooks.completeDraw.tap("top-draw", (() => {
60
+ context.restore(), context.restore(), context.draw(), context.inuse = !1, this.rendering = !1;
61
+ })));
79
62
  }
80
- _increaseRender(group, drawContext) {
81
- return __awaiter(this, void 0, void 0, (function*() {
82
- this.rendering = !0, yield this._renderIncrementalGroup(group, drawContext);
83
- }));
63
+ async _increaseRender(group, drawContext) {
64
+ this.rendering = !0, await this._renderIncrementalGroup(group, drawContext);
84
65
  }
85
- _renderIncrementalGroup(group, drawContext) {
86
- return __awaiter(this, void 0, void 0, (function*() {
87
- this.count = group.count, yield new Promise((resolve => {
88
- this.renderItem(group, drawContext, {
89
- drawingCb: () => __awaiter(this, void 0, void 0, (function*() {
90
- if (2 !== group.count) yield (0, sort_1.foreachAsync)(group, graphic_1.DefaultAttribute.zIndex, ((item, i) => {
91
- if (this.status === STATUS.STOP) return !0;
92
- if (item.isContainer) return !1;
93
- if (i < this.currentIdx) return !1;
94
- const frameTail = this.currFrameStartAt + group.incremental;
95
- return i < frameTail && (this.currentIdx = i + 1, this.renderItem(item, drawContext)),
96
- i === frameTail - 1 && (this.currFrameStartAt = this.currentIdx, this.waitToNextFrame());
97
- })), resolve(!1); else {
98
- const graphic = group.getChildAt(0);
99
- if (graphic.incremental && graphic.attribute.segments) for (graphic.incrementalAt || (graphic.incrementalAt = 0); graphic.incrementalAt < graphic.attribute.segments.length; ) drawContext.multiGraphicOptions = {
100
- startAtIdx: graphic.incrementalAt,
101
- length: graphic.incremental
102
- }, this.renderItem(graphic, drawContext), graphic.incrementalAt += graphic.incremental,
103
- yield this.waitToNextFrame(); else this.renderItem(graphic, drawContext);
104
- resolve(!1);
105
- }
106
- }))
107
- });
108
- })), this.hooks.completeDraw.call();
109
- }));
66
+ async _renderIncrementalGroup(group, drawContext) {
67
+ this.count = group.count, await new Promise((resolve => {
68
+ this.renderItem(group, drawContext, {
69
+ drawingCb: async () => {
70
+ if (2 !== group.count) await (0, sort_1.foreachAsync)(group, graphic_1.DefaultAttribute.zIndex, ((item, i) => {
71
+ if (this.status === STATUS.STOP) return !0;
72
+ if (item.isContainer) return !1;
73
+ if (i < this.currentIdx) return !1;
74
+ const frameTail = this.currFrameStartAt + group.incremental;
75
+ return i < frameTail && (this.currentIdx = i + 1, this.renderItem(item, drawContext)),
76
+ i === frameTail - 1 && (this.currFrameStartAt = this.currentIdx, this.waitToNextFrame());
77
+ })), resolve(!1); else {
78
+ const graphic = group.getChildAt(0);
79
+ if (graphic.incremental && graphic.attribute.segments) for (graphic.incrementalAt || (graphic.incrementalAt = 0); graphic.incrementalAt < graphic.attribute.segments.length; ) drawContext.multiGraphicOptions = {
80
+ startAtIdx: graphic.incrementalAt,
81
+ length: graphic.incremental
82
+ }, this.renderItem(graphic, drawContext), graphic.incrementalAt += graphic.incremental,
83
+ await this.waitToNextFrame(); else this.renderItem(graphic, drawContext);
84
+ resolve(!1);
85
+ }
86
+ }
87
+ });
88
+ })), this.hooks.completeDraw.call();
110
89
  }
111
- waitToNextFrame() {
112
- return __awaiter(this, void 0, void 0, (function*() {
113
- return new Promise((resolve => {
114
- this.global.getRequestAnimationFrame()((() => {
115
- resolve(!1);
116
- }));
90
+ async waitToNextFrame() {
91
+ return new Promise((resolve => {
92
+ this.global.getRequestAnimationFrame()((() => {
93
+ resolve(!1);
117
94
  }));
118
95
  }));
119
96
  }
120
- checkForDraw(drawContext) {
121
- return __awaiter(this, void 0, void 0, (function*() {
122
- let skip = this.rendering;
123
- return drawContext.restartIncremental && (skip = !1, yield this.forceStop(), this.resetToInit()),
124
- skip;
125
- }));
97
+ async checkForDraw(drawContext) {
98
+ let skip = this.rendering;
99
+ return drawContext.restartIncremental && (skip = !1, await this.forceStop(), this.resetToInit()),
100
+ skip;
126
101
  }
127
- forceStop() {
128
- return __awaiter(this, void 0, void 0, (function*() {
129
- this.rendering && (this.status = STATUS.STOP, yield new Promise((resolve => {
130
- this.hooks.completeDraw.tap("stopCb", (() => {
131
- this.status = STATUS.NORMAL, this.hooks.completeDraw.taps = this.hooks.completeDraw.taps.filter((item => "stopCb" !== item.name)),
132
- resolve(!1);
133
- }));
134
- })));
135
- }));
102
+ async forceStop() {
103
+ this.rendering && (this.status = STATUS.STOP, await new Promise((resolve => {
104
+ this.hooks.completeDraw.tap("stopCb", (() => {
105
+ this.status = STATUS.NORMAL, this.hooks.completeDraw.taps = this.hooks.completeDraw.taps.filter((item => "stopCb" !== item.name)),
106
+ resolve(!1);
107
+ }));
108
+ })));
136
109
  }
137
110
  resetToInit() {
138
111
  this.currFrameStartAt = 0, this.currentIdx = 0;
139
112
  }
140
- renderGroup(group, drawContext) {
141
- return __awaiter(this, void 0, void 0, (function*() {
142
- if (!drawContext.break && !1 !== group.attribute.visibleAll) return group.incremental && drawContext.startAtId === group._uid ? (yield this._increaseRender(group, drawContext),
143
- void (drawContext.break = !0)) : void (yield new Promise((resolve => {
144
- this.renderItem(group, drawContext, {
145
- drawingCb: () => __awaiter(this, void 0, void 0, (function*() {
146
- yield (0, sort_1.foreachAsync)(group, graphic_1.DefaultAttribute.zIndex, (item => __awaiter(this, void 0, void 0, (function*() {
147
- drawContext.break || item.isContainer && (yield this.renderGroup(item, drawContext));
148
- })))), resolve(!1);
149
- }))
150
- });
151
- })));
113
+ async renderGroup(group, drawContext) {
114
+ if (!drawContext.break && !1 !== group.attribute.visibleAll) return group.incremental && drawContext.startAtId === group._uid ? (await this._increaseRender(group, drawContext),
115
+ void (drawContext.break = !0)) : void await new Promise((resolve => {
116
+ this.renderItem(group, drawContext, {
117
+ drawingCb: async () => {
118
+ await (0, sort_1.foreachAsync)(group, graphic_1.DefaultAttribute.zIndex, (async item => {
119
+ drawContext.break || item.isContainer && await this.renderGroup(item, drawContext);
120
+ })), resolve(!1);
121
+ }
122
+ });
152
123
  }));
153
124
  }
154
125
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/render/incremental-draw-contribution.ts"],"names":[],"mappings":"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","file":"incremental-draw-contribution.js","sourcesContent":["import { injectable, inject, named, multiInject } from '../../../common/inversify-lite';\nimport type {\n IGraphic,\n IGroup,\n IGlobal,\n IRenderService,\n IDrawContext,\n IDrawContribution,\n IGraphicRender,\n IRenderSelector,\n IDrawItemInterceptorContribution,\n IContributionProvider\n} from '../../../interface';\nimport { DefaultAttribute } from '../../../graphic';\nimport { LayerService } from '../../../core/constants';\nimport { DefaultDrawContribution } from './draw-contribution';\nimport { SyncHook } from '../../../tapable';\nimport { GraphicRender, RenderSelector } from './symbol';\nimport { DefaultIncrementalCanvasLineRender } from './incremental-line-render';\nimport { DefaultIncrementalCanvasAreaRender } from './incremental-area-render';\nimport { DrawItemInterceptor } from './draw-interceptor';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { foreachAsync } from '../../../common/sort';\n\nenum STATUS {\n NORMAL = 0,\n STOP = 1\n}\n\n/**\n * 增量渲染的contribution,基于树状结构针对图元的渲染\n * 不是单例模式\n */\n@injectable()\nexport class DefaultIncrementalDrawContribution extends DefaultDrawContribution implements IDrawContribution {\n rendering: boolean = false;\n protected currFrameStartAt: number = 0;\n protected currentIdx: number = 0;\n protected status: STATUS = STATUS.NORMAL;\n protected checkingForDrawPromise: Promise<any> | null = null;\n hooks = {\n completeDraw: new SyncHook<[]>([])\n };\n protected lastRenderService: IRenderService;\n protected lastDrawContext: IDrawContext;\n protected count: number;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(GraphicRender)\n // protected readonly contributions: ContributionProvider<IGraphicRender>,\n @multiInject(GraphicRender) protected readonly contributions: IGraphicRender[],\n // @inject(RenderSelector) protected readonly renderSelector: IRenderSelector, // 根据图元类型选择对应的renderItem进行渲染\n @inject(DefaultIncrementalCanvasLineRender) protected readonly lineRender: IGraphicRender, // 默认的lineRender\n @inject(DefaultIncrementalCanvasAreaRender) protected readonly areaRender: IGraphicRender, // 默认的lineRender\n // 拦截器\n @inject(ContributionProvider)\n @named(DrawItemInterceptor)\n protected readonly drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>\n ) {\n super(contributions, drawItemInterceptorContributions);\n this.defaultRenderMap.set(this.lineRender.numberType, this.lineRender);\n this.defaultRenderMap.set(this.areaRender.numberType, this.areaRender);\n }\n\n /**\n *\n * @param renderService\n * @param drawContext restartIncremental为true表示重新执行增量渲染,为false表示不执行增量渲染\n * @returns\n */\n async draw(renderService: IRenderService, drawContext: IDrawContext): Promise<void> {\n // 入口检查是否需要重新绘制\n if (this.checkingForDrawPromise) {\n return;\n }\n this.lastRenderService = renderService;\n this.lastDrawContext = drawContext;\n\n this.checkingForDrawPromise = this.checkForDraw(drawContext);\n const skipDraw = await this.checkingForDrawPromise;\n this.checkingForDrawPromise = null;\n if (skipDraw) {\n return;\n }\n\n this.currentRenderService = renderService;\n const { context, viewBox } = drawContext;\n\n if (!context) {\n return;\n }\n // 增量渲染不需要dirtyBounds\n // const dirtyBounds: IBounds | undefined = this.dirtyBounds.setValue(x, y, x + width, y + height);\n // if (stage.dirtyBounds) {\n // const b = getRectIntersect(dirtyBounds, stage.dirtyBounds, false);\n // dirtyBounds.x1 = Math.floor(b.x1);\n // dirtyBounds.y1 = Math.floor(b.y1);\n // dirtyBounds.x2 = Math.ceil(b.x2);\n // dirtyBounds.y2 = Math.ceil(b.y2);\n // }\n context.inuse = true;\n // 初始化context\n context.clearMatrix();\n context.setTransformForCurrent(true);\n\n // const drawInArea =\n // dirtyBounds.width() * context.dpr !== context.canvas.width ||\n // dirtyBounds.height() * context.dpr !== context.canvas.height;\n context.save();\n\n // if (drawInArea) {\n // context.beginPath();\n // context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height());\n // context.clip();\n // }\n\n // this.clearScreen(renderService, context, drawContext);\n\n // 绘制之前需要清空画布\n drawContext.restartIncremental && this.clearScreen(this.currentRenderService, context, drawContext);\n // 设置translate\n context.translate(viewBox.x1, viewBox.y1, true);\n\n context.save();\n renderService.renderTreeRoots\n .sort((a, b) => {\n return (a.attribute.zIndex ?? DefaultAttribute.zIndex) - (b.attribute.zIndex ?? DefaultAttribute.zIndex);\n })\n .forEach(group => {\n this.renderGroup(group as IGroup, drawContext);\n });\n\n this.hooks.completeDraw.tap('top-draw', () => {\n context.restore();\n context.restore();\n context.draw();\n context.inuse = false;\n this.rendering = false;\n });\n }\n\n protected async _increaseRender(group: IGroup, drawContext: IDrawContext) {\n this.rendering = true;\n await this._renderIncrementalGroup(group, drawContext);\n return;\n }\n\n // 默认group后只有一层节点,也就是group是叶子结点的父节点\n protected async _renderIncrementalGroup(group: IGroup, drawContext: IDrawContext) {\n this.count = group.count;\n await new Promise(resolve => {\n this.renderItem(group, drawContext, {\n drawingCb: async () => {\n // 增量图元只支持一个,线段和面积图\n if (group.count === 2) {\n const graphic = group.getChildAt(0) as IGraphic;\n if (graphic.incremental && (graphic.attribute as any).segments) {\n if (!graphic.incrementalAt) {\n graphic.incrementalAt = 0;\n }\n while (graphic.incrementalAt < (graphic.attribute as any).segments.length) {\n drawContext.multiGraphicOptions = {\n startAtIdx: graphic.incrementalAt,\n length: graphic.incremental\n };\n this.renderItem(graphic, drawContext);\n graphic.incrementalAt += graphic.incremental;\n await this.waitToNextFrame();\n }\n } else {\n this.renderItem(graphic, drawContext);\n }\n resolve(false);\n return;\n }\n await foreachAsync(group, DefaultAttribute.zIndex, (item: IGraphic, i: number) => {\n if (this.status === STATUS.STOP) {\n return true;\n }\n if (item.isContainer) {\n // 增量渲染group下不应该有其他的group节点\n return false;\n }\n // 如果小于currentIdx,说明还没到当前的位置,那就直接跳过\n if (i < this.currentIdx) {\n return false;\n }\n const frameTail = this.currFrameStartAt + group.incremental;\n // 绘制 currentIdx到this.lastFrameIdx + group.incremental的内容\n if (i < frameTail) {\n this.currentIdx = i + 1;\n this.renderItem(item, drawContext);\n }\n // 下一帧\n if (i === frameTail - 1) {\n this.currFrameStartAt = this.currentIdx;\n // this.lastFrameIdx = this.currentIdx;\n return this.waitToNextFrame();\n }\n\n return false;\n });\n resolve(false);\n }\n });\n });\n this.hooks.completeDraw.call();\n }\n\n protected async waitToNextFrame(): Promise<boolean> {\n return new Promise(resolve => {\n this.global.getRequestAnimationFrame()(() => {\n resolve(false);\n });\n });\n }\n\n /**\n * 检查这次绘制是否跳过,以及执行一些准备\n * 增量渲染有自己的绘制逻辑流程,外部每次触发draw,该图层不一定会执行\n * @returns 返回true代表跳过绘制,false代表进行绘制\n */\n protected async checkForDraw(drawContext: IDrawContext): Promise<boolean> {\n let skip = this.rendering;\n if (drawContext.restartIncremental) {\n skip = false;\n await this.forceStop();\n this.resetToInit();\n }\n return skip;\n }\n\n protected async forceStop() {\n if (this.rendering) {\n this.status = STATUS.STOP;\n await new Promise(resolve => {\n this.hooks.completeDraw.tap('stopCb', () => {\n this.status = STATUS.NORMAL;\n this.hooks.completeDraw.taps = this.hooks.completeDraw.taps.filter(item => {\n return item.name !== 'stopCb';\n });\n resolve(false);\n });\n });\n }\n }\n\n protected resetToInit() {\n this.currFrameStartAt = 0;\n this.currentIdx = 0;\n }\n\n async renderGroup(group: IGroup, drawContext: IDrawContext) {\n if (drawContext.break || group.attribute.visibleAll === false) {\n return;\n }\n if (group.incremental && drawContext.startAtId === group._uid) {\n await this._increaseRender(group, drawContext);\n drawContext.break = true;\n return;\n }\n\n await new Promise(resolve => {\n this.renderItem(group, drawContext, {\n drawingCb: async () => {\n await foreachAsync(group, DefaultAttribute.zIndex, async (item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n await this.renderGroup(item as IGroup, drawContext);\n } else {\n // 增量渲染不管非_increaseRender的内容\n return;\n }\n });\n resolve(false);\n }\n });\n });\n }\n\n // /**\n // * 一个每一帧都执行的脚本,用于检查和触发执行draw\n // */\n // protected autoRunner() {\n\n // }\n}\n"]}
1
+ {"version":3,"sources":["../src/render/contributions/render/incremental-draw-contribution.ts"],"names":[],"mappings":"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","file":"incremental-draw-contribution.js","sourcesContent":["import { injectable, inject, named, multiInject } from '../../../common/inversify-lite';\nimport type {\n IGraphic,\n IGroup,\n IGlobal,\n IRenderService,\n IDrawContext,\n IDrawContribution,\n IGraphicRender,\n IRenderSelector,\n IDrawItemInterceptorContribution,\n IContributionProvider\n} from '../../../interface';\nimport { DefaultAttribute } from '../../../graphic';\nimport { LayerService } from '../../../core/constants';\nimport { DefaultDrawContribution } from './draw-contribution';\nimport { SyncHook } from '../../../tapable';\nimport { GraphicRender, RenderSelector } from './symbol';\nimport { DefaultIncrementalCanvasLineRender } from './incremental-line-render';\nimport { DefaultIncrementalCanvasAreaRender } from './incremental-area-render';\nimport { DrawItemInterceptor } from './draw-interceptor';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { foreachAsync } from '../../../common/sort';\n\nenum STATUS {\n NORMAL = 0,\n STOP = 1\n}\n\n/**\n * 增量渲染的contribution,基于树状结构针对图元的渲染\n * 不是单例模式\n */\n@injectable()\nexport class DefaultIncrementalDrawContribution extends DefaultDrawContribution implements IDrawContribution {\n rendering: boolean = false;\n protected currFrameStartAt: number = 0;\n protected currentIdx: number = 0;\n protected status: STATUS = STATUS.NORMAL;\n protected checkingForDrawPromise: Promise<any> | null = null;\n hooks = {\n completeDraw: new SyncHook<[]>([])\n };\n protected lastRenderService: IRenderService;\n protected lastDrawContext: IDrawContext;\n protected count: number;\n\n constructor(\n // @inject(ContributionProvider)\n // @named(GraphicRender)\n // protected readonly contributions: ContributionProvider<IGraphicRender>,\n @multiInject(GraphicRender) protected readonly contributions: IGraphicRender[],\n // @inject(RenderSelector) protected readonly renderSelector: IRenderSelector, // 根据图元类型选择对应的renderItem进行渲染\n @inject(DefaultIncrementalCanvasLineRender) protected readonly lineRender: IGraphicRender, // 默认的lineRender\n @inject(DefaultIncrementalCanvasAreaRender) protected readonly areaRender: IGraphicRender, // 默认的lineRender\n // 拦截器\n @inject(ContributionProvider)\n @named(DrawItemInterceptor)\n protected readonly drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>\n ) {\n super(contributions, drawItemInterceptorContributions);\n this.defaultRenderMap.set(this.lineRender.numberType, this.lineRender);\n this.defaultRenderMap.set(this.areaRender.numberType, this.areaRender);\n }\n\n /**\n *\n * @param renderService\n * @param drawContext restartIncremental为true表示重新执行增量渲染,为false表示不执行增量渲染\n * @returns\n */\n async draw(renderService: IRenderService, drawContext: IDrawContext): Promise<void> {\n // 入口检查是否需要重新绘制\n if (this.checkingForDrawPromise) {\n return;\n }\n this.lastRenderService = renderService;\n this.lastDrawContext = drawContext;\n\n this.checkingForDrawPromise = this.checkForDraw(drawContext);\n const skipDraw = await this.checkingForDrawPromise;\n this.checkingForDrawPromise = null;\n if (skipDraw) {\n return;\n }\n\n this.currentRenderService = renderService;\n const { context, viewBox } = drawContext;\n\n if (!context) {\n return;\n }\n // 增量渲染不需要dirtyBounds\n // const dirtyBounds: IBounds | undefined = this.dirtyBounds.setValue(x, y, x + width, y + height);\n // if (stage.dirtyBounds) {\n // const b = getRectIntersect(dirtyBounds, stage.dirtyBounds, false);\n // dirtyBounds.x1 = Math.floor(b.x1);\n // dirtyBounds.y1 = Math.floor(b.y1);\n // dirtyBounds.x2 = Math.ceil(b.x2);\n // dirtyBounds.y2 = Math.ceil(b.y2);\n // }\n context.inuse = true;\n // 初始化context\n context.clearMatrix();\n context.setTransformForCurrent(true);\n\n // const drawInArea =\n // dirtyBounds.width() * context.dpr !== context.canvas.width ||\n // dirtyBounds.height() * context.dpr !== context.canvas.height;\n context.save();\n\n // if (drawInArea) {\n // context.beginPath();\n // context.rect(dirtyBounds.x1, dirtyBounds.y1, dirtyBounds.width(), dirtyBounds.height());\n // context.clip();\n // }\n\n // this.clearScreen(renderService, context, drawContext);\n\n // 绘制之前需要清空画布\n drawContext.restartIncremental && this.clearScreen(this.currentRenderService, context, drawContext);\n // 设置translate\n context.translate(viewBox.x1, viewBox.y1, true);\n\n context.save();\n renderService.renderTreeRoots\n .sort((a, b) => {\n return (a.attribute.zIndex ?? DefaultAttribute.zIndex) - (b.attribute.zIndex ?? DefaultAttribute.zIndex);\n })\n .forEach(group => {\n this.renderGroup(group as IGroup, drawContext);\n });\n\n this.hooks.completeDraw.tap('top-draw', () => {\n context.restore();\n context.restore();\n context.draw();\n context.inuse = false;\n this.rendering = false;\n });\n }\n\n protected async _increaseRender(group: IGroup, drawContext: IDrawContext) {\n this.rendering = true;\n await this._renderIncrementalGroup(group, drawContext);\n return;\n }\n\n // 默认group后只有一层节点,也就是group是叶子结点的父节点\n protected async _renderIncrementalGroup(group: IGroup, drawContext: IDrawContext) {\n this.count = group.count;\n await new Promise(resolve => {\n this.renderItem(group, drawContext, {\n drawingCb: async () => {\n // 增量图元只支持一个,线段和面积图\n if (group.count === 2) {\n const graphic = group.getChildAt(0) as IGraphic;\n if (graphic.incremental && (graphic.attribute as any).segments) {\n if (!graphic.incrementalAt) {\n graphic.incrementalAt = 0;\n }\n while (graphic.incrementalAt < (graphic.attribute as any).segments.length) {\n drawContext.multiGraphicOptions = {\n startAtIdx: graphic.incrementalAt,\n length: graphic.incremental\n };\n this.renderItem(graphic, drawContext);\n graphic.incrementalAt += graphic.incremental;\n await this.waitToNextFrame();\n }\n } else {\n this.renderItem(graphic, drawContext);\n }\n resolve(false);\n return;\n }\n await foreachAsync(group, DefaultAttribute.zIndex, (item: IGraphic, i: number) => {\n if (this.status === STATUS.STOP) {\n return true;\n }\n if (item.isContainer) {\n // 增量渲染group下不应该有其他的group节点\n return false;\n }\n // 如果小于currentIdx,说明还没到当前的位置,那就直接跳过\n if (i < this.currentIdx) {\n return false;\n }\n const frameTail = this.currFrameStartAt + group.incremental;\n // 绘制 currentIdx到this.lastFrameIdx + group.incremental的内容\n if (i < frameTail) {\n this.currentIdx = i + 1;\n this.renderItem(item, drawContext);\n }\n // 下一帧\n if (i === frameTail - 1) {\n this.currFrameStartAt = this.currentIdx;\n // this.lastFrameIdx = this.currentIdx;\n return this.waitToNextFrame();\n }\n\n return false;\n });\n resolve(false);\n }\n });\n });\n this.hooks.completeDraw.call();\n }\n\n protected async waitToNextFrame(): Promise<boolean> {\n return new Promise(resolve => {\n this.global.getRequestAnimationFrame()(() => {\n resolve(false);\n });\n });\n }\n\n /**\n * 检查这次绘制是否跳过,以及执行一些准备\n * 增量渲染有自己的绘制逻辑流程,外部每次触发draw,该图层不一定会执行\n * @returns 返回true代表跳过绘制,false代表进行绘制\n */\n protected async checkForDraw(drawContext: IDrawContext): Promise<boolean> {\n let skip = this.rendering;\n if (drawContext.restartIncremental) {\n skip = false;\n await this.forceStop();\n this.resetToInit();\n }\n return skip;\n }\n\n protected async forceStop() {\n if (this.rendering) {\n this.status = STATUS.STOP;\n await new Promise(resolve => {\n this.hooks.completeDraw.tap('stopCb', () => {\n this.status = STATUS.NORMAL;\n this.hooks.completeDraw.taps = this.hooks.completeDraw.taps.filter(item => {\n return item.name !== 'stopCb';\n });\n resolve(false);\n });\n });\n }\n }\n\n protected resetToInit() {\n this.currFrameStartAt = 0;\n this.currentIdx = 0;\n }\n\n async renderGroup(group: IGroup, drawContext: IDrawContext) {\n if (drawContext.break || group.attribute.visibleAll === false) {\n return;\n }\n if (group.incremental && drawContext.startAtId === group._uid) {\n await this._increaseRender(group, drawContext);\n drawContext.break = true;\n return;\n }\n\n await new Promise(resolve => {\n this.renderItem(group, drawContext, {\n drawingCb: async () => {\n await foreachAsync(group, DefaultAttribute.zIndex, async (item: IGraphic) => {\n if (drawContext.break) {\n return;\n }\n if (item.isContainer) {\n await this.renderGroup(item as IGroup, drawContext);\n } else {\n // 增量渲染不管非_increaseRender的内容\n return;\n }\n });\n resolve(false);\n }\n });\n });\n }\n\n // /**\n // * 一个每一帧都执行的脚本,用于检查和触发执行draw\n // */\n // protected autoRunner() {\n\n // }\n}\n"]}
@@ -13,9 +13,7 @@ Object.defineProperty(exports, "__esModule", {
13
13
  const inversify_lite_1 = require("../../../common/inversify-lite"), theme_1 = require("../../../graphic/theme"), constants_1 = require("../../../graphic/constants"), utils_1 = require("./utils"), line_render_1 = require("./line-render"), render_curve_1 = require("../../../common/render-curve");
14
14
 
15
15
  let DefaultIncrementalCanvasLineRender = class extends line_render_1.DefaultCanvasLineRender {
16
- constructor() {
17
- super(...arguments), this.numberType = constants_1.LINE_NUMBER_TYPE;
18
- }
16
+ numberType=constants_1.LINE_NUMBER_TYPE;
19
17
  drawShape(line, context, x, y, drawContext, params, fillCb, strokeCb) {
20
18
  if (line.incremental && drawContext.multiGraphicOptions) {
21
19
  const {startAtIdx: startAtIdx, length: length} = drawContext.multiGraphicOptions, {segments: segments = []} = line.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/render/incremental-line-render.ts"],"names":[],"mappings":"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","file":"incremental-line-render.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n ILine,\n ILineGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n ISegment,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IDrawContext\n} from '../../../interface';\nimport { getTheme } from '../../../graphic/theme';\nimport { LINE_NUMBER_TYPE } from '../../../graphic/constants';\nimport { fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { DefaultCanvasLineRender } from './line-render';\nimport { drawIncrementalSegments } from '../../../common/render-curve';\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\n@injectable()\nexport class DefaultIncrementalCanvasLineRender extends DefaultCanvasLineRender implements IGraphicRender {\n declare type: 'line';\n numberType: number = LINE_NUMBER_TYPE;\n\n drawShape(\n line: ILine,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // console.log(drawContext.multiGraphicOptions)\n if (line.incremental && drawContext.multiGraphicOptions) {\n const { startAtIdx, length } = drawContext.multiGraphicOptions;\n const { segments = [] } = line.attribute;\n if (startAtIdx > segments.length) {\n return;\n }\n\n const lineAttribute = getTheme(line).line;\n\n const {\n fill = lineAttribute.fill,\n stroke = lineAttribute.stroke,\n opacity = lineAttribute.opacity,\n fillOpacity = lineAttribute.fillOpacity,\n strokeOpacity = lineAttribute.strokeOpacity,\n lineWidth = lineAttribute.lineWidth,\n visible = lineAttribute.visible\n } = line.attribute;\n\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(line.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb)) {\n return;\n }\n\n const { context } = drawContext;\n // 不支持clipRange,不支持pick,仅支持最基础的线段绘制\n for (let i = startAtIdx; i < startAtIdx + length; i++) {\n this.drawIncreaseSegment(\n line,\n context,\n segments[i - 1],\n segments[i],\n line.attribute.segments[i],\n [lineAttribute, line.attribute],\n x,\n y\n );\n }\n } else {\n super.drawShape(line, context, x, y, drawContext, params, fillCb, strokeCb);\n }\n }\n\n drawIncreaseSegment(\n line: ILine,\n context: IContext2d,\n lastSeg: ISegment,\n seg: ISegment,\n attribute: Partial<ILineGraphicAttribute>,\n defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[],\n offsetX: number,\n offsetY: number\n ) {\n if (!seg) {\n return;\n }\n\n context.beginPath();\n drawIncrementalSegments(context.nativeContext, lastSeg, seg, { offsetX, offsetY });\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, attribute, defaultAttribute);\n context.setStrokeStyle(line, attribute, offsetX, offsetY, defaultAttribute);\n context.stroke();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/render/contributions/render/incremental-line-render.ts"],"names":[],"mappings":"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","file":"incremental-line-render.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n ILine,\n ILineGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n ISegment,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IDrawContext\n} from '../../../interface';\nimport { getTheme } from '../../../graphic/theme';\nimport { LINE_NUMBER_TYPE } from '../../../graphic/constants';\nimport { fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { DefaultCanvasLineRender } from './line-render';\nimport { drawIncrementalSegments } from '../../../common/render-curve';\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\n@injectable()\nexport class DefaultIncrementalCanvasLineRender extends DefaultCanvasLineRender implements IGraphicRender {\n declare type: 'line';\n numberType: number = LINE_NUMBER_TYPE;\n\n drawShape(\n line: ILine,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // console.log(drawContext.multiGraphicOptions)\n if (line.incremental && drawContext.multiGraphicOptions) {\n const { startAtIdx, length } = drawContext.multiGraphicOptions;\n const { segments = [] } = line.attribute;\n if (startAtIdx > segments.length) {\n return;\n }\n\n const lineAttribute = getTheme(line).line;\n\n const {\n fill = lineAttribute.fill,\n stroke = lineAttribute.stroke,\n opacity = lineAttribute.opacity,\n fillOpacity = lineAttribute.fillOpacity,\n strokeOpacity = lineAttribute.strokeOpacity,\n lineWidth = lineAttribute.lineWidth,\n visible = lineAttribute.visible\n } = line.attribute;\n\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!(line.valid && visible)) {\n return;\n }\n\n if (!(doFill || doStroke)) {\n return;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb)) {\n return;\n }\n\n const { context } = drawContext;\n // 不支持clipRange,不支持pick,仅支持最基础的线段绘制\n for (let i = startAtIdx; i < startAtIdx + length; i++) {\n this.drawIncreaseSegment(\n line,\n context,\n segments[i - 1],\n segments[i],\n line.attribute.segments[i],\n [lineAttribute, line.attribute],\n x,\n y\n );\n }\n } else {\n super.drawShape(line, context, x, y, drawContext, params, fillCb, strokeCb);\n }\n }\n\n drawIncreaseSegment(\n line: ILine,\n context: IContext2d,\n lastSeg: ISegment,\n seg: ISegment,\n attribute: Partial<ILineGraphicAttribute>,\n defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[],\n offsetX: number,\n offsetY: number\n ) {\n if (!seg) {\n return;\n }\n\n context.beginPath();\n drawIncrementalSegments(context.nativeContext, lastSeg, seg, { offsetX, offsetY });\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, attribute, defaultAttribute);\n context.setStrokeStyle(line, attribute, offsetX, offsetY, defaultAttribute);\n context.stroke();\n }\n}\n"]}
@@ -13,18 +13,16 @@ Object.defineProperty(exports, "__esModule", {
13
13
  const vutils_1 = require("@visactor/vutils"), inversify_lite_1 = require("../../../common/inversify-lite"), theme_1 = require("../../../graphic/theme"), constants_1 = require("../../../graphic/constants"), base_render_1 = require("./base-render"), render_curve_1 = require("../../../common/render-curve"), segment_1 = require("../../../common/segment");
14
14
 
15
15
  let DefaultCanvasLineRender = class extends base_render_1.BaseRender {
16
- constructor() {
17
- super(...arguments), this.numberType = constants_1.LINE_NUMBER_TYPE;
18
- }
16
+ type;
17
+ numberType=constants_1.LINE_NUMBER_TYPE;
19
18
  draw(line, renderService, drawContext, params) {
20
- const lineAttribute = (0, theme_1.getTheme)(line, null == params ? void 0 : params.theme).line;
19
+ const lineAttribute = (0, theme_1.getTheme)(line, params?.theme).line;
21
20
  this._draw(line, lineAttribute, !1, drawContext, params);
22
21
  }
23
22
  drawSegmentItem(context, cache, fill, stroke, fillOpacity, strokeOpacity, attribute, defaultAttribute, clipRange, clipRangeByDimension, offsetX, offsetY, line, fillCb, strokeCb) {
24
- var _a, _b, _c, _d, _e;
25
23
  if (!cache) return;
26
24
  context.beginPath();
27
- const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0;
25
+ const z = this.z ?? 0;
28
26
  (0, render_curve_1.drawSegments)(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {
29
27
  offsetX: offsetX,
30
28
  offsetY: offsetY,
@@ -36,13 +34,12 @@ let DefaultCanvasLineRender = class extends base_render_1.BaseRender {
36
34
  context.fill())), !1 !== stroke && (strokeCb ? strokeCb(context, attribute, defaultAttribute) : strokeOpacity && (context.setStrokeStyle(line, attribute, originX - offsetX, originY - offsetY, defaultAttribute),
37
35
  context.stroke()));
38
36
  let {connectedType: connectedType, connectedX: connectedX, connectedY: connectedY, connectedStyle: connectedStyle} = attribute;
39
- if ((0, vutils_1.isArray)(defaultAttribute) ? (connectedType = null !== (_b = null != connectedType ? connectedType : defaultAttribute[0].connectedType) && void 0 !== _b ? _b : defaultAttribute[1].connectedType,
40
- connectedX = null !== (_c = null != connectedX ? connectedX : defaultAttribute[0].connectedX) && void 0 !== _c ? _c : defaultAttribute[1].connectedX,
41
- connectedY = null !== (_d = null != connectedY ? connectedY : defaultAttribute[0].connectedY) && void 0 !== _d ? _d : defaultAttribute[1].connectedY,
42
- connectedStyle = null !== (_e = null != connectedStyle ? connectedStyle : defaultAttribute[0].connectedStyle) && void 0 !== _e ? _e : defaultAttribute[1].connectedStyle) : (connectedType = null != connectedType ? connectedType : defaultAttribute.connectedType,
43
- connectedX = null != connectedX ? connectedX : defaultAttribute.connectedX, connectedY = null != connectedY ? connectedY : defaultAttribute.connectedY,
44
- connectedStyle = null != connectedStyle ? connectedStyle : defaultAttribute.connectedStyle),
45
- "connect" !== connectedType && "zero" !== connectedType && (connectedType = "none"),
37
+ if ((0, vutils_1.isArray)(defaultAttribute) ? (connectedType = connectedType ?? defaultAttribute[0].connectedType ?? defaultAttribute[1].connectedType,
38
+ connectedX = connectedX ?? defaultAttribute[0].connectedX ?? defaultAttribute[1].connectedX,
39
+ connectedY = connectedY ?? defaultAttribute[0].connectedY ?? defaultAttribute[1].connectedY,
40
+ connectedStyle = connectedStyle ?? defaultAttribute[0].connectedStyle ?? defaultAttribute[1].connectedStyle) : (connectedType = connectedType ?? defaultAttribute.connectedType,
41
+ connectedX = connectedX ?? defaultAttribute.connectedX, connectedY = connectedY ?? defaultAttribute.connectedY,
42
+ connectedStyle = connectedStyle ?? defaultAttribute.connectedStyle), "connect" !== connectedType && "zero" !== connectedType && (connectedType = "none"),
46
43
  "none" !== connectedType) {
47
44
  context.beginPath(), (0, render_curve_1.drawSegments)(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {
48
45
  offsetX: offsetX,
@@ -62,9 +59,8 @@ let DefaultCanvasLineRender = class extends base_render_1.BaseRender {
62
59
  return !1;
63
60
  }
64
61
  drawLinearLineHighPerformance(line, context, fill, stroke, fillOpacity, strokeOpacity, offsetX, offsetY, lineAttribute, drawContext, params, fillCb, strokeCb) {
65
- var _a;
66
62
  context.beginPath();
67
- const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, {points: points} = line.attribute, startP = points[0];
63
+ const z = this.z ?? 0, {points: points} = line.attribute, startP = points[0];
68
64
  context.moveTo(startP.x + offsetX, startP.y + offsetY, z);
69
65
  for (let i = 1; i < points.length; i++) {
70
66
  const p = points[i];
@@ -77,7 +73,7 @@ let DefaultCanvasLineRender = class extends base_render_1.BaseRender {
77
73
  context.stroke()));
78
74
  }
79
75
  drawShape(line, context, x, y, drawContext, params, fillCb, strokeCb) {
80
- const lineAttribute = (0, theme_1.getTheme)(line, null == params ? void 0 : params.theme).line, {fill: fill = lineAttribute.fill, stroke: stroke = lineAttribute.stroke, fillOpacity: fillOpacity = lineAttribute.fillOpacity, strokeOpacity: strokeOpacity = lineAttribute.strokeOpacity, segments: segments, points: points, closePath: closePath} = line.attribute;
76
+ const lineAttribute = (0, theme_1.getTheme)(line, params?.theme).line, {fill: fill = lineAttribute.fill, stroke: stroke = lineAttribute.stroke, fillOpacity: fillOpacity = lineAttribute.fillOpacity, strokeOpacity: strokeOpacity = lineAttribute.strokeOpacity, segments: segments, points: points, closePath: closePath} = line.attribute;
81
77
  if (!this.valid(line, lineAttribute, fillCb, strokeCb)) return;
82
78
  let {curveType: curveType = lineAttribute.curveType} = line.attribute;
83
79
  closePath && "linear" === curveType && (curveType = "linearClosed");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render/contributions/render/line-render.ts"],"names":[],"mappings":";;;;;;;;;AACA,6CAAgD;AAChD,mEAA4D;AAe5D,kDAAkD;AAClD,0DAA8D;AAE9D,+CAA2C;AAE3C,+DAA4D;AAC5D,qDAAwD;AAOjD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,wBAAiB;IAAvD;;QAEL,eAAU,GAAW,4BAAgB,CAAC;IA6axC,CAAC;IA1aC,IAAI,CAAC,IAAW,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAC3G,MAAM,aAAa,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAiBS,eAAe,CACvB,OAAmB,EACnB,KAAiB,EACjB,IAAa,EACb,MAAe,EACf,WAAmB,EACnB,aAAqB,EACrB,SAAyC,EACzC,gBAAoF,EACpF,SAAiB,EACjB,oBAA+C,EAC/C,OAAe,EACf,OAAe,EACf,IAAW,EACX,MAIY,EACZ,QAIY;;QAEZ,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,OAAO,CAAC,SAAS,EAAE,CAAC;QAEpB,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,CAAC,mCAAI,CAAC,CAAC;QAEtB,IAAA,2BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACrG,OAAO;YACP,OAAO;YACP,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAGH,IACE,IAAI,CAAC,KAAK;YACV,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,SAAS;YACxB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3C;YACA,OAAO,CAAC,SAAS,EAAE,CAAC;SACrB;QAGD,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAE9F,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;QACrD,MAAM,GAAG,GAAY,KAAK,CAAC;QAC3B,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;aAC9C;iBAAM,IAAI,WAAW,EAAE;gBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;aAChD;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAChG,OAAO,CAAC,MAAM,EAAE,CAAC;aAClB;SACF;QAGD,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;QAC1E,IAAI,IAAA,gBAAO,EAAC,gBAAgB,CAAC,EAAE;YAC7B,aAAa,GAAG,MAAA,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,mCAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACxG,UAAU,GAAG,MAAA,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,mCAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5F,UAAU,GAAG,MAAA,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,mCAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5F,cAAc,GAAG,MAAA,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,mCAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;SAC7G;aAAM;YACL,aAAa,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,gBAAgB,CAAC,aAAa,CAAC;YAChE,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,gBAAgB,CAAC,UAAU,CAAC;YACvD,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,gBAAgB,CAAC,UAAU,CAAC;YACvD,cAAc,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,gBAAgB,CAAC,cAAc,CAAC;SACpE;QAED,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,MAAM,EAAE;YAC3D,aAAa,GAAG,MAAM,CAAC;SACxB;QACD,IAAI,aAAa,KAAK,MAAM,EAAE;YAC5B,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAA,2BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE;gBACrG,OAAO;gBACP,OAAO;gBACP,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;YAEH,MAAM,EAAE,GAAG,EAAE,CAAC;YACd,IAAI,IAAA,gBAAO,EAAC,gBAAgB,CAAC,EAAE;gBAC7B,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC3B;YACD,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;iBAC9C;qBAAM,IAAI,WAAW,EAAE;oBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;oBACvF,OAAO,CAAC,IAAI,EAAE,CAAC;iBAChB;aACF;YACD,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;iBAChD;qBAAM,IAAI,aAAa,EAAE;oBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;oBACvF,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClB;aACF;SACF;QACD,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC;IAGD,6BAA6B,CAC3B,IAAW,EACX,OAAmB,EACnB,IAAa,EACb,MAAe,EACf,WAAmB,EACnB,aAAqB,EACrB,OAAe,EACf,OAAe,EACf,aAA8C,EAC9C,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;;QAEZ,OAAO,CAAC,SAAS,EAAE,CAAC;QAEpB,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,CAAC,mCAAI,CAAC,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;SACjD;QAGD,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEhG,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1D,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;aAChD;iBAAM,IAAI,WAAW,EAAE;gBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClG,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;aAClD;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClG,OAAO,CAAC,MAAM,EAAE,CAAC;aAClB;SACF;IACH,CAAC;IAED,SAAS,CACP,IAAW,EACX,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;QAGZ,MAAM,aAAa,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,IAAI,CAAC;QAEzD,MAAM,EACJ,IAAI,GAAG,aAAa,CAAC,IAAI,EACzB,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,WAAW,GAAG,aAAa,CAAC,WAAW,EACvC,aAAa,GAAG,aAAa,CAAC,aAAa,EAC3C,QAAQ,EACR,MAAM,EACN,SAAS,EACV,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7D,IAAI,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE;YACvC,SAAS,GAAG,cAAc,CAAC;SAC5B;QAED,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,EAAE,GACtG,IAAI,CAAC,SAAS,CAAC;QAEjB,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,QAAQ,EAAE;YACpG,OAAO,IAAI,CAAC,6BAA6B,CACvC,IAAI,EACJ,OAAO,EACP,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,CAAC,EACD,CAAC,EACD,aAAa,EACb,WAAW,EACX,MAAM,EACN,MAAM,EACN,QAAQ,CACT,CAAC;SACH;QAID,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;gBAC/B,IAAI,UAAsB,CAAC;gBAC3B,IAAI,OAA4E,CAAC;gBACjF,IAAI,CAAC,KAAK,GAAG,QAAQ;qBAClB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBAClB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;wBAE1B,IAAI,KAAK,KAAK,CAAC,EAAE;4BACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gCACX,CAAC,OAAO,GAAG;oCACT,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oCACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oCACrB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;iCACvD,CAAC,CAAC;4BACL,OAAO,IAAI,CAAC;yBACb;qBACF;oBAED,IAAI,KAAK,KAAK,CAAC,EAAE;wBACf,UAAU,GAAG;4BACX,CAAC,EAAE,OAAO,CAAC,IAAI;4BACf,CAAC,EAAE,OAAO,CAAC,IAAI;4BACf,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO;yBAC3D,CAAC;qBACH;yBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;wBACpB,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC5B,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC5B,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;qBACxE;oBACD,MAAM,IAAI,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE;wBAChD,UAAU;qBACX,CAAC,CAAC;oBACH,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;qBACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAG1B,IAAI,SAAS,KAAK,cAAc,EAAE;oBAChC,IAAI,MAAkB,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChD,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gCAC/B,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAChC,MAAM;6BACP;yBACF;wBACD,IAAI,MAAM,EAAE;4BACV,MAAM;yBACP;qBACF;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACzG;aACF;iBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAClC,IAAI,CAAC,KAAK,GAAG,IAAA,uBAAa,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE5E,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnC,QAAQ,CAAC,KAAK,EAAE,CAAC;aAClB;YACD,IAAI,SAAS,KAAK,CAAC,EAAE;gBACnB,IAAI,IAAI,GAAG,KAAK,CAAC;gBAEjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAClC,IAAI,IAAI,EAAE;wBACR,OAAO;qBACR;oBACD,IAAI,GAAG,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,QAAQ,CAAC,KAAK,CAAC,EACf,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAC/B,SAAS,EACT,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;iBAAM;gBAGL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBAEtE,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;gBAEhD,IAAI,qBAAqB,GAAG,CAAC,CAAC;gBAC9B,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAClC,IAAI,IAAI,EAAE;wBACR,OAAO;qBACR;oBACD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,YAAY,CAAC;oBACrE,qBAAqB,IAAI,YAAY,CAAC;oBACtC,IAAI,GAAG,GAAG,CAAC,EAAE;wBACX,IAAI,GAAG,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,QAAQ,CAAC,KAAK,CAAC,EACf,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAC/B,IAAA,YAAG,EAAC,GAAG,EAAE,CAAC,CAAC,EACX,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;aAAM;YACL,IAAI,CAAC,eAAe,CAClB,OAAO,EACP,IAAI,CAAC,KAAmB,EACxB,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,IAAI,CAAC,SAAS,EACd,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;SACH;IACH,CAAC;CACF,CAAA;AA/aY,uBAAuB;IADnC,IAAA,2BAAU,GAAE;GACA,uBAAuB,CA+anC;AA/aY,0DAAuB","file":"line-render.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { min, isArray } from '@visactor/vutils';\nimport { injectable } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n ILine,\n ILineGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IClipRangeByDimensionType,\n ISegPath2D,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams\n} from '../../../interface';\nimport { getTheme } from '../../../graphic/theme';\nimport { LINE_NUMBER_TYPE } from '../../../graphic/constants';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { BaseRender } from './base-render';\nimport { mat4Allocate } from '../../../allocator/matrix-allocate';\nimport { drawSegments } from '../../../common/render-curve';\nimport { calcLineCache } from '../../../common/segment';\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\n@injectable()\nexport class DefaultCanvasLineRender extends BaseRender<ILine> implements IGraphicRender {\n type: 'line';\n numberType: number = LINE_NUMBER_TYPE;\n declare z: number;\n\n draw(line: ILine, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const lineAttribute = getTheme(line, params?.theme).line;\n this._draw(line, lineAttribute, false, drawContext, params);\n }\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: ISegPath2D,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n attribute: Partial<ILineGraphicAttribute>,\n defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[],\n clipRange: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n offsetX: number,\n offsetY: number,\n line: ILine,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n if (!cache) {\n return;\n }\n context.beginPath();\n\n const z = this.z ?? 0;\n\n drawSegments(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {\n offsetX,\n offsetY,\n offsetZ: z\n });\n\n // 如果是一根线,且是Closed,并且没有defined为false的点,需要close\n if (\n line.cache &&\n !isArray(line.cache) &&\n line.cache.curves.every(c => c.defined) &&\n line.attribute.curveType &&\n line.attribute.curveType.includes('Closed')\n ) {\n context.closePath();\n }\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, attribute, defaultAttribute);\n\n const { x: originX = 0, x: originY = 0 } = attribute;\n const ret: boolean = false;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, attribute, originX - offsetX, originY - offsetY, defaultAttribute);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, attribute, originX - offsetX, originY - offsetY, defaultAttribute);\n context.stroke();\n }\n }\n\n // 绘制connect区域\n let { connectedType, connectedX, connectedY, connectedStyle } = attribute;\n if (isArray(defaultAttribute)) {\n connectedType = connectedType ?? defaultAttribute[0].connectedType ?? defaultAttribute[1].connectedType;\n connectedX = connectedX ?? defaultAttribute[0].connectedX ?? defaultAttribute[1].connectedX;\n connectedY = connectedY ?? defaultAttribute[0].connectedY ?? defaultAttribute[1].connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute[0].connectedStyle ?? defaultAttribute[1].connectedStyle;\n } else {\n connectedType = connectedType ?? defaultAttribute.connectedType;\n connectedX = connectedX ?? defaultAttribute.connectedX;\n connectedY = connectedY ?? defaultAttribute.connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute.connectedStyle;\n }\n // 如果有非法值就是none\n if (connectedType !== 'connect' && connectedType !== 'zero') {\n connectedType = 'none';\n }\n if (connectedType !== 'none') {\n context.beginPath();\n drawSegments(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {\n offsetX,\n offsetY,\n offsetZ: z,\n drawConnect: true,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n });\n\n const da = [];\n if (isArray(defaultAttribute)) {\n defaultAttribute.forEach(i => da.push(i));\n } else {\n da.push(defaultAttribute);\n }\n da.push(attribute);\n\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, connectedStyle, originX - offsetX, originY - offsetY, da);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, connectedStyle, originX - offsetX, originY - offsetY, da);\n context.stroke();\n }\n }\n }\n return !!ret;\n }\n\n // 高性能绘制linear line,不用拆分\n drawLinearLineHighPerformance(\n line: ILine,\n context: IContext2d,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n offsetX: number,\n offsetY: number,\n lineAttribute: Required<ILineGraphicAttribute>,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n context.beginPath();\n\n const z = this.z ?? 0;\n const { points } = line.attribute;\n const startP = points[0];\n\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, line.attribute, lineAttribute);\n\n const { x: originX = 0, x: originY = 0 } = line.attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, line.attribute, lineAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, line.attribute, originX - offsetX, originY - offsetY, lineAttribute);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, line.attribute, lineAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, line.attribute, originX - offsetX, originY - offsetY, lineAttribute);\n context.stroke();\n }\n }\n }\n\n drawShape(\n line: ILine,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const lineAttribute = graphicService.themeService.getCurrentTheme().lineAttribute;\n const lineAttribute = getTheme(line, params?.theme).line;\n\n const {\n fill = lineAttribute.fill,\n stroke = lineAttribute.stroke,\n fillOpacity = lineAttribute.fillOpacity,\n strokeOpacity = lineAttribute.strokeOpacity,\n segments,\n points,\n closePath\n } = line.attribute;\n\n const data = this.valid(line, lineAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n\n let { curveType = lineAttribute.curveType } = line.attribute;\n if (closePath && curveType === 'linear') {\n curveType = 'linearClosed';\n }\n\n const { clipRange = lineAttribute.clipRange, clipRangeByDimension = lineAttribute.clipRangeByDimension } =\n line.attribute;\n\n if (clipRange === 1 && !segments && !points.some(p => p.defined === false) && curveType === 'linear') {\n return this.drawLinearLineHighPerformance(\n line,\n context,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n x,\n y,\n lineAttribute,\n drawContext,\n params,\n fillCb,\n strokeCb\n );\n }\n // const { fVisible, sVisible, doFill, doStroke } = data;\n\n // 更新cache\n if (line.shouldUpdateShape()) {\n const { points, segments } = line.attribute;\n\n const _points = points;\n if (segments && segments.length) {\n let startPoint: IPointLike;\n let lastSeg: { endX: number; endY: number; curves: Array<{ defined: boolean }> };\n line.cache = segments\n .map((seg, index) => {\n if (seg.points.length <= 1) {\n // 第一个点的话,直接设置lastTopSeg\n if (index === 0) {\n seg.points[0] &&\n (lastSeg = {\n endX: seg.points[0].x,\n endY: seg.points[0].y,\n curves: [{ defined: seg.points[0].defined !== false }]\n });\n return null;\n }\n }\n // 添加上一个segment结束的点作为这个segment的起始点\n if (index === 1) {\n startPoint = {\n x: lastSeg.endX,\n y: lastSeg.endY,\n defined: lastSeg.curves[lastSeg.curves.length - 1].defined\n };\n } else if (index > 1) {\n startPoint.x = lastSeg.endX;\n startPoint.y = lastSeg.endY;\n startPoint.defined = lastSeg.curves[lastSeg.curves.length - 1].defined;\n }\n const data = calcLineCache(seg.points, curveType, {\n startPoint\n });\n lastSeg = data;\n return data;\n })\n .filter(item => !!item);\n\n // 如果lineClosed,那就绘制到第一个点\n if (curveType === 'linearClosed') {\n let startP: IPointLike;\n for (let i = 0; i < line.cache.length; i++) {\n const cacheItem = line.cache[i];\n for (let i = 0; i < cacheItem.curves.length; i++) {\n if (cacheItem.curves[i].defined) {\n startP = cacheItem.curves[i].p0;\n break;\n }\n }\n if (startP) {\n break;\n }\n }\n line.cache[line.cache.length - 1] && line.cache[line.cache.length - 1].lineTo(startP.x, startP.y, true);\n }\n } else if (points && points.length) {\n line.cache = calcLineCache(_points, curveType);\n } else {\n line.cache = null;\n line.clearUpdateShapeTag();\n return;\n }\n line.clearUpdateShapeTag();\n }\n\n if (Array.isArray(line.cache)) {\n const segments = line.attribute.segments.filter(item => item.points.length);\n // 如果第一个seg只有一个点,那么shift出去\n if (segments[0].points.length === 1) {\n segments.shift();\n }\n if (clipRange === 1) {\n let skip = false;\n // 性能优化,不需要clip的线段不需要计算长度\n line.cache.forEach((cache, index) => {\n if (skip) {\n return;\n }\n skip = this.drawSegmentItem(\n context,\n cache,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n segments[index],\n [lineAttribute, line.attribute],\n clipRange,\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n });\n } else {\n // 如果是segments的话,每个clipRange需要重新计算\n // 整个线段的总长度\n const totalLength = line.cache.reduce((l, c) => l + c.getLength(), 0);\n // 总需要绘制的长度\n const totalDrawLength = clipRange * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let skip = false;\n line.cache.forEach((cache, index) => {\n if (skip) {\n return;\n }\n const curSegLength = cache.getLength();\n const _cr = (totalDrawLength - drawedLengthUntilLast) / curSegLength;\n drawedLengthUntilLast += curSegLength;\n if (_cr > 0) {\n skip = this.drawSegmentItem(\n context,\n cache,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n segments[index],\n [lineAttribute, line.attribute],\n min(_cr, 1),\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n }\n });\n }\n } else {\n this.drawSegmentItem(\n context,\n line.cache as ISegPath2D,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n line.attribute,\n lineAttribute,\n clipRange,\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/render/contributions/render/line-render.ts"],"names":[],"mappings":";;;;;;;;;AACA,6CAAgD;AAChD,mEAA4D;AAe5D,kDAAkD;AAClD,0DAA8D;AAE9D,+CAA2C;AAE3C,+DAA4D;AAC5D,qDAAwD;AAOjD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,wBAAiB;IAC5D,IAAI,CAAS;IACb,UAAU,GAAW,4BAAgB,CAAC;IAGtC,IAAI,CAAC,IAAW,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAC3G,MAAM,aAAa,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAiBS,eAAe,CACvB,OAAmB,EACnB,KAAiB,EACjB,IAAa,EACb,MAAe,EACf,WAAmB,EACnB,aAAqB,EACrB,SAAyC,EACzC,gBAAoF,EACpF,SAAiB,EACjB,oBAA+C,EAC/C,OAAe,EACf,OAAe,EACf,IAAW,EACX,MAIY,EACZ,QAIY;QAEZ,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,OAAO,CAAC,SAAS,EAAE,CAAC;QAEpB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAA,2BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACrG,OAAO;YACP,OAAO;YACP,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAGH,IACE,IAAI,CAAC,KAAK;YACV,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,SAAS;YACxB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3C;YACA,OAAO,CAAC,SAAS,EAAE,CAAC;SACrB;QAGD,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAE9F,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;QACrD,MAAM,GAAG,GAAY,KAAK,CAAC;QAC3B,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;aAC9C;iBAAM,IAAI,WAAW,EAAE;gBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;aAChD;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAChG,OAAO,CAAC,MAAM,EAAE,CAAC;aAClB;SACF;QAGD,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;QAC1E,IAAI,IAAA,gBAAO,EAAC,gBAAgB,CAAC,EAAE;YAC7B,aAAa,GAAG,aAAa,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACxG,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5F,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5F,cAAc,GAAG,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;SAC7G;aAAM;YACL,aAAa,GAAG,aAAa,IAAI,gBAAgB,CAAC,aAAa,CAAC;YAChE,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC;YACvD,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC;YACvD,cAAc,GAAG,cAAc,IAAI,gBAAgB,CAAC,cAAc,CAAC;SACpE;QAED,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,MAAM,EAAE;YAC3D,aAAa,GAAG,MAAM,CAAC;SACxB;QACD,IAAI,aAAa,KAAK,MAAM,EAAE;YAC5B,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAA,2BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE;gBACrG,OAAO;gBACP,OAAO;gBACP,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;YAEH,MAAM,EAAE,GAAG,EAAE,CAAC;YACd,IAAI,IAAA,gBAAO,EAAC,gBAAgB,CAAC,EAAE;gBAC7B,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC3B;YACD,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;iBAC9C;qBAAM,IAAI,WAAW,EAAE;oBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;oBACvF,OAAO,CAAC,IAAI,EAAE,CAAC;iBAChB;aACF;YACD,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;iBAChD;qBAAM,IAAI,aAAa,EAAE;oBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;oBACvF,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClB;aACF;SACF;QACD,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC;IAGD,6BAA6B,CAC3B,IAAW,EACX,OAAmB,EACnB,IAAa,EACb,MAAe,EACf,WAAmB,EACnB,aAAqB,EACrB,OAAe,EACf,OAAe,EACf,aAA8C,EAC9C,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;QAEZ,OAAO,CAAC,SAAS,EAAE,CAAC;QAEpB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;SACjD;QAGD,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEhG,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1D,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;aAChD;iBAAM,IAAI,WAAW,EAAE;gBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClG,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;aAClD;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClG,OAAO,CAAC,MAAM,EAAE,CAAC;aAClB;SACF;IACH,CAAC;IAED,SAAS,CACP,IAAW,EACX,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;QAGZ,MAAM,aAAa,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;QAEzD,MAAM,EACJ,IAAI,GAAG,aAAa,CAAC,IAAI,EACzB,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,WAAW,GAAG,aAAa,CAAC,WAAW,EACvC,aAAa,GAAG,aAAa,CAAC,aAAa,EAC3C,QAAQ,EACR,MAAM,EACN,SAAS,EACV,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7D,IAAI,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE;YACvC,SAAS,GAAG,cAAc,CAAC;SAC5B;QAED,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,EAAE,GACtG,IAAI,CAAC,SAAS,CAAC;QAEjB,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,QAAQ,EAAE;YACpG,OAAO,IAAI,CAAC,6BAA6B,CACvC,IAAI,EACJ,OAAO,EACP,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,CAAC,EACD,CAAC,EACD,aAAa,EACb,WAAW,EACX,MAAM,EACN,MAAM,EACN,QAAQ,CACT,CAAC;SACH;QAID,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;gBAC/B,IAAI,UAAsB,CAAC;gBAC3B,IAAI,OAA4E,CAAC;gBACjF,IAAI,CAAC,KAAK,GAAG,QAAQ;qBAClB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBAClB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;wBAE1B,IAAI,KAAK,KAAK,CAAC,EAAE;4BACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gCACX,CAAC,OAAO,GAAG;oCACT,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oCACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oCACrB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;iCACvD,CAAC,CAAC;4BACL,OAAO,IAAI,CAAC;yBACb;qBACF;oBAED,IAAI,KAAK,KAAK,CAAC,EAAE;wBACf,UAAU,GAAG;4BACX,CAAC,EAAE,OAAO,CAAC,IAAI;4BACf,CAAC,EAAE,OAAO,CAAC,IAAI;4BACf,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO;yBAC3D,CAAC;qBACH;yBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;wBACpB,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC5B,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC5B,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;qBACxE;oBACD,MAAM,IAAI,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE;wBAChD,UAAU;qBACX,CAAC,CAAC;oBACH,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;qBACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAG1B,IAAI,SAAS,KAAK,cAAc,EAAE;oBAChC,IAAI,MAAkB,CAAC;oBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChD,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gCAC/B,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAChC,MAAM;6BACP;yBACF;wBACD,IAAI,MAAM,EAAE;4BACV,MAAM;yBACP;qBACF;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACzG;aACF;iBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAClC,IAAI,CAAC,KAAK,GAAG,IAAA,uBAAa,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE5E,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnC,QAAQ,CAAC,KAAK,EAAE,CAAC;aAClB;YACD,IAAI,SAAS,KAAK,CAAC,EAAE;gBACnB,IAAI,IAAI,GAAG,KAAK,CAAC;gBAEjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAClC,IAAI,IAAI,EAAE;wBACR,OAAO;qBACR;oBACD,IAAI,GAAG,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,QAAQ,CAAC,KAAK,CAAC,EACf,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAC/B,SAAS,EACT,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;iBAAM;gBAGL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBAEtE,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;gBAEhD,IAAI,qBAAqB,GAAG,CAAC,CAAC;gBAC9B,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAClC,IAAI,IAAI,EAAE;wBACR,OAAO;qBACR;oBACD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,YAAY,CAAC;oBACrE,qBAAqB,IAAI,YAAY,CAAC;oBACtC,IAAI,GAAG,GAAG,CAAC,EAAE;wBACX,IAAI,GAAG,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,KAAK,EACL,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,QAAQ,CAAC,KAAK,CAAC,EACf,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAC/B,IAAA,YAAG,EAAC,GAAG,EAAE,CAAC,CAAC,EACX,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;aAAM;YACL,IAAI,CAAC,eAAe,CAClB,OAAO,EACP,IAAI,CAAC,KAAmB,EACxB,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,EACR,WAAW,EACX,aAAa,EACb,IAAI,CAAC,SAAS,EACd,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,CAAC,EACD,CAAC,EACD,IAAI,EACJ,MAAM,EACN,QAAQ,CACT,CAAC;SACH;IACH,CAAC;CACF,CAAA;AA/aY,uBAAuB;IADnC,IAAA,2BAAU,GAAE;GACA,uBAAuB,CA+anC;AA/aY,0DAAuB","file":"line-render.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { min, isArray } from '@visactor/vutils';\nimport { injectable } from '../../../common/inversify-lite';\nimport type {\n IContext2d,\n ILine,\n ILineGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IClipRangeByDimensionType,\n ISegPath2D,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams\n} from '../../../interface';\nimport { getTheme } from '../../../graphic/theme';\nimport { LINE_NUMBER_TYPE } from '../../../graphic/constants';\nimport { drawPathProxy, fillVisible, runFill, runStroke, strokeVisible } from './utils';\nimport { BaseRender } from './base-render';\nimport { mat4Allocate } from '../../../allocator/matrix-allocate';\nimport { drawSegments } from '../../../common/render-curve';\nimport { calcLineCache } from '../../../common/segment';\n\n/**\n * 默认的基于canvas的line渲染器\n * 单例\n */\n@injectable()\nexport class DefaultCanvasLineRender extends BaseRender<ILine> implements IGraphicRender {\n type: 'line';\n numberType: number = LINE_NUMBER_TYPE;\n declare z: number;\n\n draw(line: ILine, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const lineAttribute = getTheme(line, params?.theme).line;\n this._draw(line, lineAttribute, false, drawContext, params);\n }\n\n /**\n * 绘制segment\n * @param context\n * @param cache\n * @param fill\n * @param stroke\n * @param attribute\n * @param defaultAttribute\n * @param clipRange\n * @param offsetX\n * @param offsetY\n * @param fillCb\n * @param strokeCb\n * @returns 返回true代表跳过后续绘制\n */\n protected drawSegmentItem(\n context: IContext2d,\n cache: ISegPath2D,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n attribute: Partial<ILineGraphicAttribute>,\n defaultAttribute: Required<ILineGraphicAttribute> | Partial<ILineGraphicAttribute>[],\n clipRange: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n offsetX: number,\n offsetY: number,\n line: ILine,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute | IThemeAttribute[]\n ) => boolean\n ): boolean {\n if (!cache) {\n return;\n }\n context.beginPath();\n\n const z = this.z ?? 0;\n\n drawSegments(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {\n offsetX,\n offsetY,\n offsetZ: z\n });\n\n // 如果是一根线,且是Closed,并且没有defined为false的点,需要close\n if (\n line.cache &&\n !isArray(line.cache) &&\n line.cache.curves.every(c => c.defined) &&\n line.attribute.curveType &&\n line.attribute.curveType.includes('Closed')\n ) {\n context.closePath();\n }\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, attribute, defaultAttribute);\n\n const { x: originX = 0, x: originY = 0 } = attribute;\n const ret: boolean = false;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, attribute, originX - offsetX, originY - offsetY, defaultAttribute);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, attribute, originX - offsetX, originY - offsetY, defaultAttribute);\n context.stroke();\n }\n }\n\n // 绘制connect区域\n let { connectedType, connectedX, connectedY, connectedStyle } = attribute;\n if (isArray(defaultAttribute)) {\n connectedType = connectedType ?? defaultAttribute[0].connectedType ?? defaultAttribute[1].connectedType;\n connectedX = connectedX ?? defaultAttribute[0].connectedX ?? defaultAttribute[1].connectedX;\n connectedY = connectedY ?? defaultAttribute[0].connectedY ?? defaultAttribute[1].connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute[0].connectedStyle ?? defaultAttribute[1].connectedStyle;\n } else {\n connectedType = connectedType ?? defaultAttribute.connectedType;\n connectedX = connectedX ?? defaultAttribute.connectedX;\n connectedY = connectedY ?? defaultAttribute.connectedY;\n connectedStyle = connectedStyle ?? defaultAttribute.connectedStyle;\n }\n // 如果有非法值就是none\n if (connectedType !== 'connect' && connectedType !== 'zero') {\n connectedType = 'none';\n }\n if (connectedType !== 'none') {\n context.beginPath();\n drawSegments(context.camera ? context : context.nativeContext, cache, clipRange, clipRangeByDimension, {\n offsetX,\n offsetY,\n offsetZ: z,\n drawConnect: true,\n mode: connectedType,\n zeroX: connectedX,\n zeroY: connectedY\n });\n\n const da = [];\n if (isArray(defaultAttribute)) {\n defaultAttribute.forEach(i => da.push(i));\n } else {\n da.push(defaultAttribute);\n }\n da.push(attribute);\n\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, attribute, defaultAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, connectedStyle, originX - offsetX, originY - offsetY, da);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, attribute, defaultAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, connectedStyle, originX - offsetX, originY - offsetY, da);\n context.stroke();\n }\n }\n }\n return !!ret;\n }\n\n // 高性能绘制linear line,不用拆分\n drawLinearLineHighPerformance(\n line: ILine,\n context: IContext2d,\n fill: boolean,\n stroke: boolean,\n fillOpacity: number,\n strokeOpacity: number,\n offsetX: number,\n offsetY: number,\n lineAttribute: Required<ILineGraphicAttribute>,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n context.beginPath();\n\n const z = this.z ?? 0;\n const { points } = line.attribute;\n const startP = points[0];\n\n context.moveTo(startP.x + offsetX, startP.y + offsetY, z);\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n context.lineTo(p.x + offsetX, p.y + offsetY, z);\n }\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(line, line.attribute, lineAttribute);\n\n const { x: originX = 0, x: originY = 0 } = line.attribute;\n if (fill !== false) {\n if (fillCb) {\n fillCb(context, line.attribute, lineAttribute);\n } else if (fillOpacity) {\n context.setCommonStyle(line, line.attribute, originX - offsetX, originY - offsetY, lineAttribute);\n context.fill();\n }\n }\n if (stroke !== false) {\n if (strokeCb) {\n strokeCb(context, line.attribute, lineAttribute);\n } else if (strokeOpacity) {\n context.setStrokeStyle(line, line.attribute, originX - offsetX, originY - offsetY, lineAttribute);\n context.stroke();\n }\n }\n }\n\n drawShape(\n line: ILine,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n lineAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const lineAttribute = graphicService.themeService.getCurrentTheme().lineAttribute;\n const lineAttribute = getTheme(line, params?.theme).line;\n\n const {\n fill = lineAttribute.fill,\n stroke = lineAttribute.stroke,\n fillOpacity = lineAttribute.fillOpacity,\n strokeOpacity = lineAttribute.strokeOpacity,\n segments,\n points,\n closePath\n } = line.attribute;\n\n const data = this.valid(line, lineAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n\n let { curveType = lineAttribute.curveType } = line.attribute;\n if (closePath && curveType === 'linear') {\n curveType = 'linearClosed';\n }\n\n const { clipRange = lineAttribute.clipRange, clipRangeByDimension = lineAttribute.clipRangeByDimension } =\n line.attribute;\n\n if (clipRange === 1 && !segments && !points.some(p => p.defined === false) && curveType === 'linear') {\n return this.drawLinearLineHighPerformance(\n line,\n context,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n x,\n y,\n lineAttribute,\n drawContext,\n params,\n fillCb,\n strokeCb\n );\n }\n // const { fVisible, sVisible, doFill, doStroke } = data;\n\n // 更新cache\n if (line.shouldUpdateShape()) {\n const { points, segments } = line.attribute;\n\n const _points = points;\n if (segments && segments.length) {\n let startPoint: IPointLike;\n let lastSeg: { endX: number; endY: number; curves: Array<{ defined: boolean }> };\n line.cache = segments\n .map((seg, index) => {\n if (seg.points.length <= 1) {\n // 第一个点的话,直接设置lastTopSeg\n if (index === 0) {\n seg.points[0] &&\n (lastSeg = {\n endX: seg.points[0].x,\n endY: seg.points[0].y,\n curves: [{ defined: seg.points[0].defined !== false }]\n });\n return null;\n }\n }\n // 添加上一个segment结束的点作为这个segment的起始点\n if (index === 1) {\n startPoint = {\n x: lastSeg.endX,\n y: lastSeg.endY,\n defined: lastSeg.curves[lastSeg.curves.length - 1].defined\n };\n } else if (index > 1) {\n startPoint.x = lastSeg.endX;\n startPoint.y = lastSeg.endY;\n startPoint.defined = lastSeg.curves[lastSeg.curves.length - 1].defined;\n }\n const data = calcLineCache(seg.points, curveType, {\n startPoint\n });\n lastSeg = data;\n return data;\n })\n .filter(item => !!item);\n\n // 如果lineClosed,那就绘制到第一个点\n if (curveType === 'linearClosed') {\n let startP: IPointLike;\n for (let i = 0; i < line.cache.length; i++) {\n const cacheItem = line.cache[i];\n for (let i = 0; i < cacheItem.curves.length; i++) {\n if (cacheItem.curves[i].defined) {\n startP = cacheItem.curves[i].p0;\n break;\n }\n }\n if (startP) {\n break;\n }\n }\n line.cache[line.cache.length - 1] && line.cache[line.cache.length - 1].lineTo(startP.x, startP.y, true);\n }\n } else if (points && points.length) {\n line.cache = calcLineCache(_points, curveType);\n } else {\n line.cache = null;\n line.clearUpdateShapeTag();\n return;\n }\n line.clearUpdateShapeTag();\n }\n\n if (Array.isArray(line.cache)) {\n const segments = line.attribute.segments.filter(item => item.points.length);\n // 如果第一个seg只有一个点,那么shift出去\n if (segments[0].points.length === 1) {\n segments.shift();\n }\n if (clipRange === 1) {\n let skip = false;\n // 性能优化,不需要clip的线段不需要计算长度\n line.cache.forEach((cache, index) => {\n if (skip) {\n return;\n }\n skip = this.drawSegmentItem(\n context,\n cache,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n segments[index],\n [lineAttribute, line.attribute],\n clipRange,\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n });\n } else {\n // 如果是segments的话,每个clipRange需要重新计算\n // 整个线段的总长度\n const totalLength = line.cache.reduce((l, c) => l + c.getLength(), 0);\n // 总需要绘制的长度\n const totalDrawLength = clipRange * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let skip = false;\n line.cache.forEach((cache, index) => {\n if (skip) {\n return;\n }\n const curSegLength = cache.getLength();\n const _cr = (totalDrawLength - drawedLengthUntilLast) / curSegLength;\n drawedLengthUntilLast += curSegLength;\n if (_cr > 0) {\n skip = this.drawSegmentItem(\n context,\n cache,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n segments[index],\n [lineAttribute, line.attribute],\n min(_cr, 1),\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n }\n });\n }\n } else {\n this.drawSegmentItem(\n context,\n line.cache as ISegPath2D,\n !!fill,\n !!stroke,\n fillOpacity,\n strokeOpacity,\n line.attribute,\n lineAttribute,\n clipRange,\n clipRangeByDimension,\n x,\n y,\n line,\n fillCb,\n strokeCb\n );\n }\n }\n}\n"]}
@@ -19,19 +19,20 @@ Object.defineProperty(exports, "__esModule", {
19
19
  const inversify_lite_1 = require("../../../common/inversify-lite"), contribution_provider_1 = require("../../../common/contribution-provider"), render_command_list_1 = require("../../../common/render-command-list"), theme_1 = require("../../../graphic/theme"), constants_1 = require("../../../graphic/constants"), constants_2 = require("./contributions/constants"), base_render_1 = require("./base-render"), path_contribution_render_1 = require("./contributions/path-contribution-render");
20
20
 
21
21
  let DefaultCanvasPathRender = class extends base_render_1.BaseRender {
22
+ pathRenderContribitions;
23
+ type;
24
+ numberType=constants_1.PATH_NUMBER_TYPE;
25
+ tempTheme;
22
26
  constructor(pathRenderContribitions) {
23
- super(), this.pathRenderContribitions = pathRenderContribitions, this.numberType = constants_1.PATH_NUMBER_TYPE,
24
- this.builtinContributions = [ path_contribution_render_1.defaultPathBackgroundRenderContribution, path_contribution_render_1.defaultPathTextureRenderContribution ],
27
+ super(), this.pathRenderContribitions = pathRenderContribitions, this.builtinContributions = [ path_contribution_render_1.defaultPathBackgroundRenderContribution, path_contribution_render_1.defaultPathTextureRenderContribution ],
25
28
  this.init(pathRenderContribitions);
26
29
  }
27
30
  drawShape(path, context, x, y, drawContext, params, fillCb, strokeCb) {
28
- var _a, _b, _c;
29
- const pathAttribute = null !== (_a = this.tempTheme) && void 0 !== _a ? _a : (0,
30
- theme_1.getTheme)(path, null == params ? void 0 : params.theme).path, {x: originX = pathAttribute.x, y: originY = pathAttribute.y} = path.attribute, z = null !== (_b = this.z) && void 0 !== _b ? _b : 0, data = this.valid(path, pathAttribute, fillCb, strokeCb);
31
+ const pathAttribute = this.tempTheme ?? (0, theme_1.getTheme)(path, params?.theme).path, {x: originX = pathAttribute.x, y: originY = pathAttribute.y} = path.attribute, z = this.z ?? 0, data = this.valid(path, pathAttribute, fillCb, strokeCb);
31
32
  if (!data) return;
32
33
  const {fVisible: fVisible, sVisible: sVisible, doFill: doFill, doStroke: doStroke} = data;
33
34
  if (context.beginPath(), path.pathShape) (0, render_command_list_1.renderCommandList)(path.pathShape.commandList, context, x, y, 1, 1, z); else {
34
- const path2D = null !== (_c = path.attribute.path) && void 0 !== _c ? _c : pathAttribute.path;
35
+ const path2D = path.attribute.path ?? pathAttribute.path;
35
36
  (0, render_command_list_1.renderCommandList)(path2D.commandList, context, x, y, 1, 1, z);
36
37
  }
37
38
  context.setShadowBlendStyle && context.setShadowBlendStyle(path, path.attribute, pathAttribute),
@@ -41,7 +42,7 @@ let DefaultCanvasPathRender = class extends base_render_1.BaseRender {
41
42
  context.fill())), this.afterRenderStep(path, context, x, y, doFill, doStroke, fVisible, sVisible, pathAttribute, drawContext, fillCb, strokeCb);
42
43
  }
43
44
  draw(path, renderService, drawContext, params) {
44
- const pathAttribute = (0, theme_1.getTheme)(path, null == params ? void 0 : params.theme).path;
45
+ const pathAttribute = (0, theme_1.getTheme)(path, params?.theme).path;
45
46
  this.tempTheme = pathAttribute, this._draw(path, pathAttribute, !1, drawContext, params),
46
47
  this.tempTheme = null;
47
48
  }