@visactor/vrender-core 0.20.0-alpha.1 → 0.20.0-alpha.3

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 (420) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +2 -53
  2. package/cjs/animate/Ticker/default-ticker.js +17 -130
  3. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  4. package/cjs/animate/Ticker/index.d.ts +4 -0
  5. package/cjs/animate/Ticker/index.js +3 -1
  6. package/cjs/animate/Ticker/index.js.map +1 -1
  7. package/cjs/animate/Ticker/manual-ticker-handler.d.ts +15 -0
  8. package/cjs/animate/Ticker/manual-ticker-handler.js +36 -0
  9. package/cjs/animate/Ticker/manual-ticker-handler.js.map +1 -0
  10. package/cjs/animate/Ticker/manual-ticker.d.ts +19 -0
  11. package/cjs/animate/Ticker/manual-ticker.js +37 -0
  12. package/cjs/animate/Ticker/manual-ticker.js.map +1 -0
  13. package/cjs/animate/Ticker/raf-tick-handler.d.ts +9 -0
  14. package/cjs/animate/Ticker/raf-tick-handler.js +30 -0
  15. package/cjs/animate/Ticker/raf-tick-handler.js.map +1 -0
  16. package/cjs/animate/Ticker/timeout-tick-handler.d.ts +9 -0
  17. package/cjs/animate/Ticker/timeout-tick-handler.js +28 -0
  18. package/cjs/animate/Ticker/timeout-tick-handler.js.map +1 -0
  19. package/cjs/animate/Ticker/type.d.ts +6 -0
  20. package/cjs/animate/Ticker/type.js +11 -0
  21. package/cjs/animate/Ticker/type.js.map +1 -0
  22. package/cjs/canvas/conical-gradient.js.map +1 -1
  23. package/cjs/canvas/contributions/base-canvas.js +4 -13
  24. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  25. package/cjs/common/3d-interceptor.js +1 -2
  26. package/cjs/common/bounds-context.js +2 -1
  27. package/cjs/common/morphing-utils.js +1 -1
  28. package/cjs/common/path-svg.js +1 -1
  29. package/cjs/common/polygon.js +2 -2
  30. package/cjs/common/rect-utils.js +1 -1
  31. package/cjs/common/render-area.js +1 -1
  32. package/cjs/common/render-command-list.js +1 -2
  33. package/cjs/common/render-curve.js +1 -1
  34. package/cjs/common/render-utils.js +1 -1
  35. package/cjs/common/seg-context.js +1 -1
  36. package/cjs/common/segment/catmull-rom-close.d.ts +41 -0
  37. package/cjs/common/segment/catmull-rom-close.js +81 -0
  38. package/cjs/common/segment/catmull-rom-close.js.map +1 -0
  39. package/cjs/common/segment/catmull-rom.d.ts +38 -0
  40. package/cjs/common/segment/catmull-rom.js +97 -0
  41. package/cjs/common/segment/catmull-rom.js.map +1 -0
  42. package/cjs/common/segment/index.d.ts +5 -2
  43. package/cjs/common/segment/index.js +8 -1
  44. package/cjs/common/segment/index.js.map +1 -1
  45. package/cjs/common/simplify.js +1 -1
  46. package/cjs/common/sort.js +1 -1
  47. package/cjs/common/split-path.js +1 -1
  48. package/cjs/common/store.js +1 -1
  49. package/cjs/common/text.js +4 -3
  50. package/cjs/common/text.js.map +1 -1
  51. package/cjs/core/application.js +2 -1
  52. package/cjs/core/camera.js +1 -1
  53. package/cjs/core/constants.js +1 -1
  54. package/cjs/core/contributions/layerHandler/modules.js +2 -5
  55. package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
  56. package/cjs/core/core-modules.js +1 -1
  57. package/cjs/core/global-module.js +2 -0
  58. package/cjs/core/global.js +1 -1
  59. package/cjs/core/graphic-utils.js +1 -1
  60. package/cjs/core/index.js +1 -1
  61. package/cjs/core/layer-service.js +1 -1
  62. package/cjs/core/layer.js +1 -1
  63. package/cjs/core/light.js +1 -1
  64. package/cjs/core/stage.d.ts +2 -2
  65. package/cjs/core/stage.js +10 -4
  66. package/cjs/core/stage.js.map +1 -1
  67. package/cjs/core/window.js +1 -1
  68. package/cjs/event/federated-event/base-event.js +12 -2
  69. package/cjs/event/federated-event/base-event.js.map +1 -1
  70. package/cjs/graphic/arc.d.ts +6 -4
  71. package/cjs/graphic/arc.js +46 -17
  72. package/cjs/graphic/arc.js.map +1 -1
  73. package/cjs/graphic/arc3d.d.ts +2 -2
  74. package/cjs/graphic/arc3d.js +8 -9
  75. package/cjs/graphic/arc3d.js.map +1 -1
  76. package/cjs/graphic/area.d.ts +5 -3
  77. package/cjs/graphic/area.js +27 -12
  78. package/cjs/graphic/area.js.map +1 -1
  79. package/cjs/graphic/builtin-symbol/index.d.ts +1 -1
  80. package/cjs/graphic/builtin-symbol/thin-triangle.d.ts +2 -2
  81. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -2
  82. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  83. package/cjs/graphic/builtin-symbol/triangle-down.d.ts +1 -2
  84. package/cjs/graphic/builtin-symbol/triangle-down.js +4 -9
  85. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  86. package/cjs/graphic/builtin-symbol/triangle-left.d.ts +0 -1
  87. package/cjs/graphic/builtin-symbol/triangle-left.js +3 -8
  88. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  89. package/cjs/graphic/builtin-symbol/triangle-right.d.ts +1 -2
  90. package/cjs/graphic/builtin-symbol/triangle-right.js +4 -9
  91. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  92. package/cjs/graphic/builtin-symbol/triangle-up.d.ts +1 -2
  93. package/cjs/graphic/builtin-symbol/triangle-up.js +4 -9
  94. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  95. package/cjs/graphic/builtin-symbol/triangle.d.ts +1 -2
  96. package/cjs/graphic/builtin-symbol/triangle.js +1 -3
  97. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  98. package/cjs/graphic/circle.d.ts +5 -3
  99. package/cjs/graphic/circle.js +20 -12
  100. package/cjs/graphic/circle.js.map +1 -1
  101. package/cjs/graphic/config.js +6 -3
  102. package/cjs/graphic/config.js.map +1 -1
  103. package/cjs/graphic/glyph.d.ts +4 -2
  104. package/cjs/graphic/glyph.js +9 -2
  105. package/cjs/graphic/glyph.js.map +1 -1
  106. package/cjs/graphic/graphic-creator.js.map +1 -1
  107. package/cjs/graphic/graphic-service/common-outer-boder-bounds.d.ts +3 -0
  108. package/cjs/graphic/graphic-service/common-outer-boder-bounds.js +17 -0
  109. package/cjs/graphic/graphic-service/common-outer-boder-bounds.js.map +1 -0
  110. package/cjs/graphic/graphic-service/graphic-service.d.ts +7 -36
  111. package/cjs/graphic/graphic-service/graphic-service.js +11 -296
  112. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  113. package/cjs/graphic/graphic-service/symbol-outer-border-bounds.d.ts +3 -0
  114. package/cjs/graphic/graphic-service/symbol-outer-border-bounds.js +17 -0
  115. package/cjs/graphic/graphic-service/symbol-outer-border-bounds.js.map +1 -0
  116. package/cjs/graphic/graphic.d.ts +12 -9
  117. package/cjs/graphic/graphic.js +17 -2
  118. package/cjs/graphic/graphic.js.map +1 -1
  119. package/cjs/graphic/group.d.ts +7 -3
  120. package/cjs/graphic/group.js +34 -22
  121. package/cjs/graphic/group.js.map +1 -1
  122. package/cjs/graphic/image.d.ts +3 -2
  123. package/cjs/graphic/image.js +14 -9
  124. package/cjs/graphic/image.js.map +1 -1
  125. package/cjs/graphic/line.d.ts +5 -3
  126. package/cjs/graphic/line.js +24 -11
  127. package/cjs/graphic/line.js.map +1 -1
  128. package/cjs/graphic/node-tree.js.map +1 -1
  129. package/cjs/graphic/path.d.ts +3 -3
  130. package/cjs/graphic/path.js +17 -13
  131. package/cjs/graphic/path.js.map +1 -1
  132. package/cjs/graphic/polygon.d.ts +4 -3
  133. package/cjs/graphic/polygon.js +16 -11
  134. package/cjs/graphic/polygon.js.map +1 -1
  135. package/cjs/graphic/pyramid3d.d.ts +2 -2
  136. package/cjs/graphic/pyramid3d.js +10 -9
  137. package/cjs/graphic/pyramid3d.js.map +1 -1
  138. package/cjs/graphic/rect.d.ts +3 -3
  139. package/cjs/graphic/rect.js +16 -12
  140. package/cjs/graphic/rect.js.map +1 -1
  141. package/cjs/graphic/rect3d.js +2 -2
  142. package/cjs/graphic/rect3d.js.map +1 -1
  143. package/cjs/graphic/richtext/icon.d.ts +2 -2
  144. package/cjs/graphic/richtext/icon.js.map +1 -1
  145. package/cjs/graphic/richtext.d.ts +3 -3
  146. package/cjs/graphic/richtext.js +44 -12
  147. package/cjs/graphic/richtext.js.map +1 -1
  148. package/cjs/graphic/shadow-root.d.ts +2 -2
  149. package/cjs/graphic/shadow-root.js.map +1 -1
  150. package/cjs/graphic/symbol.d.ts +5 -3
  151. package/cjs/graphic/symbol.js +25 -12
  152. package/cjs/graphic/symbol.js.map +1 -1
  153. package/cjs/graphic/text.d.ts +10 -10
  154. package/cjs/graphic/text.js +26 -20
  155. package/cjs/graphic/text.js.map +1 -1
  156. package/cjs/graphic/theme.js.map +1 -1
  157. package/cjs/graphic/wrap-text.d.ts +1 -1
  158. package/cjs/graphic/wrap-text.js +2 -2
  159. package/cjs/graphic/wrap-text.js.map +1 -1
  160. package/cjs/index.d.ts +2 -0
  161. package/cjs/index.js +3 -1
  162. package/cjs/index.js.map +1 -1
  163. package/cjs/interface/graphic/arc.d.ts +2 -2
  164. package/cjs/interface/graphic/arc.js.map +1 -1
  165. package/cjs/interface/graphic/arc3d.d.ts +1 -1
  166. package/cjs/interface/graphic/arc3d.js.map +1 -1
  167. package/cjs/interface/graphic/area.d.ts +1 -0
  168. package/cjs/interface/graphic/area.js.map +1 -1
  169. package/cjs/interface/graphic/line.d.ts +1 -0
  170. package/cjs/interface/graphic/line.js.map +1 -1
  171. package/cjs/interface/graphic-service.d.ts +10 -17
  172. package/cjs/interface/graphic-service.js.map +1 -1
  173. package/cjs/interface/graphic.d.ts +2 -0
  174. package/cjs/interface/graphic.js.map +1 -1
  175. package/cjs/picker/pick-interceptor.js +5 -3
  176. package/cjs/picker/pick-interceptor.js.map +1 -1
  177. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.d.ts +1 -0
  178. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +8 -2
  179. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  180. package/cjs/plugins/builtin-plugin/auto-render-plugin.d.ts +2 -1
  181. package/cjs/plugins/builtin-plugin/auto-render-plugin.js +10 -8
  182. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  183. package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +1 -0
  184. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +8 -2
  185. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  186. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  187. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  188. package/cjs/render/contributions/render/arc-render.js +15 -28
  189. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  190. package/cjs/render/contributions/render/area-render.js +11 -6
  191. package/cjs/render/contributions/render/area-render.js.map +1 -1
  192. package/cjs/render/contributions/render/base-render.d.ts +1 -1
  193. package/cjs/render/contributions/render/base-render.js.map +1 -1
  194. package/cjs/render/contributions/render/index.d.ts +1 -0
  195. package/cjs/render/contributions/render/index.js +3 -3
  196. package/cjs/render/contributions/render/index.js.map +1 -1
  197. package/cjs/render/contributions/render/line-render.js +6 -3
  198. package/cjs/render/contributions/render/line-render.js.map +1 -1
  199. package/cjs/render/contributions/render/symbol-render.js +1 -1
  200. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  201. package/cjs/render/contributions/render/utils.d.ts +24 -0
  202. package/cjs/render/contributions/render/utils.js +56 -23
  203. package/cjs/render/contributions/render/utils.js.map +1 -1
  204. package/dist/index.es.js +6911 -7082
  205. package/es/animate/Ticker/default-ticker.d.ts +2 -53
  206. package/es/animate/Ticker/default-ticker.js +3 -106
  207. package/es/animate/Ticker/default-ticker.js.map +1 -1
  208. package/es/animate/Ticker/index.d.ts +4 -0
  209. package/es/animate/Ticker/index.js +8 -0
  210. package/es/animate/Ticker/index.js.map +1 -1
  211. package/es/animate/Ticker/manual-ticker-handler.d.ts +15 -0
  212. package/es/animate/Ticker/manual-ticker-handler.js +28 -0
  213. package/es/animate/Ticker/manual-ticker-handler.js.map +1 -0
  214. package/es/animate/Ticker/manual-ticker.d.ts +19 -0
  215. package/es/animate/Ticker/manual-ticker.js +31 -0
  216. package/es/animate/Ticker/manual-ticker.js.map +1 -0
  217. package/es/animate/Ticker/raf-tick-handler.d.ts +9 -0
  218. package/es/animate/Ticker/raf-tick-handler.js +22 -0
  219. package/es/animate/Ticker/raf-tick-handler.js.map +1 -0
  220. package/es/animate/Ticker/timeout-tick-handler.d.ts +9 -0
  221. package/es/animate/Ticker/timeout-tick-handler.js +20 -0
  222. package/es/animate/Ticker/timeout-tick-handler.js.map +1 -0
  223. package/es/animate/Ticker/type.d.ts +6 -0
  224. package/es/animate/Ticker/type.js +7 -0
  225. package/es/animate/Ticker/type.js.map +1 -0
  226. package/es/canvas/conical-gradient.js.map +1 -1
  227. package/es/canvas/contributions/base-canvas.js +3 -15
  228. package/es/canvas/contributions/base-canvas.js.map +1 -1
  229. package/es/common/3d-interceptor.js +1 -2
  230. package/es/common/bounds-context.js +2 -1
  231. package/es/common/morphing-utils.js +1 -1
  232. package/es/common/path-svg.js +1 -1
  233. package/es/common/polygon.js +1 -1
  234. package/es/common/rect-utils.js +1 -1
  235. package/es/common/render-area.js +1 -1
  236. package/es/common/render-command-list.js +1 -2
  237. package/es/common/render-curve.js +1 -1
  238. package/es/common/render-utils.js +1 -1
  239. package/es/common/seg-context.js +1 -1
  240. package/es/common/segment/catmull-rom-close.d.ts +41 -0
  241. package/es/common/segment/catmull-rom-close.js +74 -0
  242. package/es/common/segment/catmull-rom-close.js.map +1 -0
  243. package/es/common/segment/catmull-rom.d.ts +38 -0
  244. package/es/common/segment/catmull-rom.js +92 -0
  245. package/es/common/segment/catmull-rom.js.map +1 -0
  246. package/es/common/segment/index.d.ts +5 -2
  247. package/es/common/segment/index.js +11 -0
  248. package/es/common/segment/index.js.map +1 -1
  249. package/es/common/simplify.js +1 -1
  250. package/es/common/sort.js +1 -1
  251. package/es/common/split-path.js +1 -1
  252. package/es/common/store.js +1 -1
  253. package/es/common/text.js +5 -4
  254. package/es/common/text.js.map +1 -1
  255. package/es/core/application.js +2 -1
  256. package/es/core/camera.js +1 -1
  257. package/es/core/constants.js +1 -1
  258. package/es/core/contributions/layerHandler/modules.js +2 -9
  259. package/es/core/contributions/layerHandler/modules.js.map +1 -1
  260. package/es/core/core-modules.js +1 -1
  261. package/es/core/global-module.js +2 -0
  262. package/es/core/global.js +1 -1
  263. package/es/core/graphic-utils.js +1 -1
  264. package/es/core/index.js +1 -1
  265. package/es/core/layer-service.js +1 -1
  266. package/es/core/layer.js +1 -1
  267. package/es/core/light.js +1 -1
  268. package/es/core/stage.d.ts +2 -2
  269. package/es/core/stage.js +9 -7
  270. package/es/core/stage.js.map +1 -1
  271. package/es/core/window.js +1 -1
  272. package/es/event/federated-event/base-event.js +12 -2
  273. package/es/event/federated-event/base-event.js.map +1 -1
  274. package/es/graphic/arc.d.ts +6 -4
  275. package/es/graphic/arc.js +47 -16
  276. package/es/graphic/arc.js.map +1 -1
  277. package/es/graphic/arc3d.d.ts +2 -2
  278. package/es/graphic/arc3d.js +7 -10
  279. package/es/graphic/arc3d.js.map +1 -1
  280. package/es/graphic/area.d.ts +5 -3
  281. package/es/graphic/area.js +28 -11
  282. package/es/graphic/area.js.map +1 -1
  283. package/es/graphic/builtin-symbol/index.d.ts +1 -1
  284. package/es/graphic/builtin-symbol/thin-triangle.d.ts +2 -2
  285. package/es/graphic/builtin-symbol/thin-triangle.js +2 -2
  286. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  287. package/es/graphic/builtin-symbol/triangle-down.d.ts +1 -2
  288. package/es/graphic/builtin-symbol/triangle-down.js +2 -7
  289. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  290. package/es/graphic/builtin-symbol/triangle-left.d.ts +0 -1
  291. package/es/graphic/builtin-symbol/triangle-left.js +1 -6
  292. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  293. package/es/graphic/builtin-symbol/triangle-right.d.ts +1 -2
  294. package/es/graphic/builtin-symbol/triangle-right.js +2 -7
  295. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  296. package/es/graphic/builtin-symbol/triangle-up.d.ts +1 -2
  297. package/es/graphic/builtin-symbol/triangle-up.js +2 -7
  298. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  299. package/es/graphic/builtin-symbol/triangle.d.ts +1 -2
  300. package/es/graphic/builtin-symbol/triangle.js +1 -3
  301. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  302. package/es/graphic/circle.d.ts +5 -3
  303. package/es/graphic/circle.js +23 -9
  304. package/es/graphic/circle.js.map +1 -1
  305. package/es/graphic/config.js +6 -3
  306. package/es/graphic/config.js.map +1 -1
  307. package/es/graphic/glyph.d.ts +4 -2
  308. package/es/graphic/glyph.js +9 -1
  309. package/es/graphic/glyph.js.map +1 -1
  310. package/es/graphic/graphic-creator.js.map +1 -1
  311. package/es/graphic/graphic-service/common-outer-boder-bounds.d.ts +3 -0
  312. package/es/graphic/graphic-service/common-outer-boder-bounds.js +9 -0
  313. package/es/graphic/graphic-service/common-outer-boder-bounds.js.map +1 -0
  314. package/es/graphic/graphic-service/graphic-service.d.ts +7 -36
  315. package/es/graphic/graphic-service/graphic-service.js +11 -297
  316. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  317. package/es/graphic/graphic-service/symbol-outer-border-bounds.d.ts +3 -0
  318. package/es/graphic/graphic-service/symbol-outer-border-bounds.js +11 -0
  319. package/es/graphic/graphic-service/symbol-outer-border-bounds.js.map +1 -0
  320. package/es/graphic/graphic.d.ts +12 -9
  321. package/es/graphic/graphic.js +20 -3
  322. package/es/graphic/graphic.js.map +1 -1
  323. package/es/graphic/group.d.ts +7 -3
  324. package/es/graphic/group.js +32 -22
  325. package/es/graphic/group.js.map +1 -1
  326. package/es/graphic/image.d.ts +3 -2
  327. package/es/graphic/image.js +15 -8
  328. package/es/graphic/image.js.map +1 -1
  329. package/es/graphic/line.d.ts +5 -3
  330. package/es/graphic/line.js +25 -10
  331. package/es/graphic/line.js.map +1 -1
  332. package/es/graphic/node-tree.js.map +1 -1
  333. package/es/graphic/path.d.ts +3 -3
  334. package/es/graphic/path.js +18 -12
  335. package/es/graphic/path.js.map +1 -1
  336. package/es/graphic/polygon.d.ts +4 -3
  337. package/es/graphic/polygon.js +17 -10
  338. package/es/graphic/polygon.js.map +1 -1
  339. package/es/graphic/pyramid3d.d.ts +2 -2
  340. package/es/graphic/pyramid3d.js +8 -10
  341. package/es/graphic/pyramid3d.js.map +1 -1
  342. package/es/graphic/rect.d.ts +3 -3
  343. package/es/graphic/rect.js +16 -10
  344. package/es/graphic/rect.js.map +1 -1
  345. package/es/graphic/rect3d.js +1 -3
  346. package/es/graphic/rect3d.js.map +1 -1
  347. package/es/graphic/richtext/icon.d.ts +2 -2
  348. package/es/graphic/richtext/icon.js.map +1 -1
  349. package/es/graphic/richtext.d.ts +3 -3
  350. package/es/graphic/richtext.js +43 -11
  351. package/es/graphic/richtext.js.map +1 -1
  352. package/es/graphic/shadow-root.d.ts +2 -2
  353. package/es/graphic/shadow-root.js.map +1 -1
  354. package/es/graphic/symbol.d.ts +5 -3
  355. package/es/graphic/symbol.js +26 -11
  356. package/es/graphic/symbol.js.map +1 -1
  357. package/es/graphic/text.d.ts +10 -10
  358. package/es/graphic/text.js +27 -22
  359. package/es/graphic/text.js.map +1 -1
  360. package/es/graphic/theme.js.map +1 -1
  361. package/es/graphic/wrap-text.d.ts +1 -1
  362. package/es/graphic/wrap-text.js +1 -3
  363. package/es/graphic/wrap-text.js.map +1 -1
  364. package/es/index.d.ts +2 -0
  365. package/es/index.js +4 -0
  366. package/es/index.js.map +1 -1
  367. package/es/interface/graphic/arc.d.ts +2 -2
  368. package/es/interface/graphic/arc.js.map +1 -1
  369. package/es/interface/graphic/arc3d.d.ts +1 -1
  370. package/es/interface/graphic/arc3d.js.map +1 -1
  371. package/es/interface/graphic/area.d.ts +1 -0
  372. package/es/interface/graphic/area.js.map +1 -1
  373. package/es/interface/graphic/line.d.ts +1 -0
  374. package/es/interface/graphic/line.js.map +1 -1
  375. package/es/interface/graphic-service.d.ts +10 -17
  376. package/es/interface/graphic-service.js.map +1 -1
  377. package/es/interface/graphic.d.ts +2 -0
  378. package/es/interface/graphic.js.map +1 -1
  379. package/es/picker/pick-interceptor.js +6 -2
  380. package/es/picker/pick-interceptor.js.map +1 -1
  381. package/es/plugins/builtin-plugin/3dview-transform-plugin.d.ts +1 -0
  382. package/es/plugins/builtin-plugin/3dview-transform-plugin.js +6 -0
  383. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  384. package/es/plugins/builtin-plugin/auto-render-plugin.d.ts +2 -1
  385. package/es/plugins/builtin-plugin/auto-render-plugin.js +9 -8
  386. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  387. package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +1 -0
  388. package/es/plugins/builtin-plugin/flex-layout-plugin.js +6 -0
  389. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  390. package/es/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  391. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  392. package/es/render/contributions/render/arc-render.js +10 -16
  393. package/es/render/contributions/render/arc-render.js.map +1 -1
  394. package/es/render/contributions/render/area-render.js +11 -5
  395. package/es/render/contributions/render/area-render.js.map +1 -1
  396. package/es/render/contributions/render/base-render.d.ts +1 -1
  397. package/es/render/contributions/render/base-render.js.map +1 -1
  398. package/es/render/contributions/render/index.d.ts +1 -0
  399. package/es/render/contributions/render/index.js +2 -0
  400. package/es/render/contributions/render/index.js.map +1 -1
  401. package/es/render/contributions/render/line-render.js +6 -3
  402. package/es/render/contributions/render/line-render.js.map +1 -1
  403. package/es/render/contributions/render/symbol-render.js +1 -1
  404. package/es/render/contributions/render/symbol-render.js.map +1 -1
  405. package/es/render/contributions/render/utils.d.ts +24 -0
  406. package/es/render/contributions/render/utils.js +46 -15
  407. package/es/render/contributions/render/utils.js.map +1 -1
  408. package/package.json +2 -2
  409. package/cjs/graphic/graphic-service/common-contribution.d.ts +0 -5
  410. package/cjs/graphic/graphic-service/common-contribution.js +0 -19
  411. package/cjs/graphic/graphic-service/common-contribution.js.map +0 -1
  412. package/cjs/graphic/graphic-service/symbol-contribution.d.ts +0 -6
  413. package/cjs/graphic/graphic-service/symbol-contribution.js +0 -21
  414. package/cjs/graphic/graphic-service/symbol-contribution.js.map +0 -1
  415. package/es/graphic/graphic-service/common-contribution.d.ts +0 -5
  416. package/es/graphic/graphic-service/common-contribution.js +0 -11
  417. package/es/graphic/graphic-service/common-contribution.js.map +0 -1
  418. package/es/graphic/graphic-service/symbol-contribution.d.ts +0 -6
  419. package/es/graphic/graphic-service/symbol-contribution.js +0 -15
  420. package/es/graphic/graphic-service/symbol-contribution.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/conical-gradient.ts"],"names":[],"mappings":"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","file":"conical-gradient.js","sourcesContent":["/**\n * 环形渐变部分源码借鉴https://github.com/parksben/create-conical-gradient/blob/master/LICENSE\n * MIT License\n\n * Copyright (c) 2020 parksben\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { pi2, LRU } from '@visactor/vutils';\nimport { application } from '../application';\nimport type { IConicalGradient, IContext2d } from '../interface';\nimport { interpolateColor } from '../color-string';\n\nclass ConicalCanvas {\n static canvas: HTMLCanvasElement;\n static ctx: CanvasRenderingContext2D | null;\n\n static GetCanvas() {\n try {\n if (!ConicalCanvas.canvas) {\n ConicalCanvas.canvas = application.global.createCanvas({});\n }\n return ConicalCanvas.canvas;\n } catch (err) {\n return null;\n }\n }\n\n static GetCtx() {\n if (!ConicalCanvas.ctx) {\n const conicalCanvas = ConicalCanvas.GetCanvas();\n ConicalCanvas.ctx = conicalCanvas.getContext('2d');\n }\n return ConicalCanvas.ctx;\n }\n}\n\n// todo 目前环形渐变缓存还是依赖于x和y,后续优化环形渐变\nexport class ColorInterpolate extends LRU {\n private readonly rgbaSet: Uint8ClampedArray;\n private cacheParams: {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n } = { CLEAN_THRESHOLD: 100, L_TIME: 1e3 };\n static _instance: ColorInterpolate;\n\n static getInstance() {\n if (!ColorInterpolate._instance) {\n ColorInterpolate._instance = new ColorInterpolate();\n }\n return ColorInterpolate._instance;\n }\n\n constructor(stops: [number, string][] = [], precision = 100) {\n super();\n const canvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n canvas.width = precision;\n canvas.height = 1;\n if (!conicalCtx) {\n return;\n }\n conicalCtx.translate(0, 0);\n if (!conicalCtx) {\n throw new Error('获取ctx发生错误');\n }\n\n const gradient = conicalCtx.createLinearGradient(0, 0, precision, 0);\n stops.forEach(stop => {\n gradient.addColorStop(stop[0], stop[1]);\n });\n\n conicalCtx.fillStyle = gradient;\n conicalCtx.fillRect(0, 0, precision, 1);\n\n this.rgbaSet = conicalCtx.getImageData(0, 0, precision, 1).data;\n }\n\n getColor(offset: number): string {\n const rgba = this.rgbaSet.slice(4 * offset, 4 * offset + 4);\n return `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${rgba[3] / 255})`;\n }\n\n dataMap: Map<string, { data: ColorInterpolate; timestamp: number[] }> = new Map();\n // static lastCache: {\n // stops: [number, string][],\n // precision: number,\n // colorInter: ColorInterpolate,\n // step: number,\n // stepNum: number,\n // r: number,\n // lineWidth: number,\n // } | null = null;\n\n GetOrCreate(x: number, y: number, w: number, h: number, stops: [number, string][] = [], precision = 100) {\n let str = `${x}${y}${w}${h}`;\n stops.forEach(item => (str += item.join()));\n str += precision;\n let colorInter = this.dataMap.get(str);\n if (!colorInter) {\n const data = new ColorInterpolate(stops, precision);\n colorInter = { data, timestamp: [] };\n this.addLimitedTimestamp(colorInter, Date.now(), {});\n this.dataMap.set(str, colorInter);\n }\n this.clearCache(this.dataMap, this.cacheParams);\n return colorInter.data;\n }\n}\n\nclass ConicalPatternStore {\n private static cache: {\n [key: string]: {\n width: number;\n height: number;\n pattern: CanvasPattern;\n }[];\n } = {};\n private static ImageSize = [20, 40, 80, 160, 320, 640, 1280, 2560];\n\n static GetSize(minSize: number): number {\n for (let i = 0; i < ConicalPatternStore.ImageSize.length; i++) {\n if (ConicalPatternStore.ImageSize[i] >= minSize) {\n return ConicalPatternStore.ImageSize[i];\n }\n }\n return minSize;\n }\n\n static Get(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n w: number,\n h: number\n ): CanvasPattern | null {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n const data = ConicalPatternStore.cache[key];\n if (!data || data.length === 0) {\n return null;\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i].width >= w && data[i].height >= h) {\n return data[i].pattern;\n }\n }\n return null;\n }\n\n static Set(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n pattern: CanvasPattern,\n w: number,\n h: number\n ) {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n // 必然是顺序的,因为如果能get到的话就不需要set\n if (!ConicalPatternStore.cache[key]) {\n ConicalPatternStore.cache[key] = [\n {\n width: w,\n height: h,\n pattern\n }\n ];\n } else {\n ConicalPatternStore.cache[key].push({\n width: w,\n height: h,\n pattern\n });\n }\n }\n\n static GenKey(stops: Array<[number, string]>, x: number, y: number, startAngle: number, endAngle: number): string {\n return `${x},${y},${startAngle},${endAngle},${stops.join()}`;\n }\n}\n\nexport function getConicGradientAt(x: number, y: number, angle: number, color: IConicalGradient) {\n const { stops, startAngle, endAngle } = color;\n\n while (angle < 0) {\n angle += pi2;\n }\n while (angle > pi2) {\n angle -= pi2;\n }\n\n if (angle < startAngle) {\n return stops[0].color;\n }\n if (angle > endAngle) {\n return stops[0].color;\n }\n let percent = (angle - startAngle) / (endAngle - startAngle);\n let startStop: any;\n let endStop: any;\n for (let i = 0; i < stops.length; i++) {\n if (stops[i].offset >= percent) {\n startStop = stops[i - 1];\n endStop = stops[i];\n break;\n }\n }\n percent = (percent - startStop.offset) / (endStop.offset - startStop.offset);\n return interpolateColor(startStop.color, endStop.color, percent, false);\n}\n\n/**\n * 环形渐变效果\n * @param context\n * @param stops\n * @param x\n * @param y\n * @param deltaAngle 用于细分出颜色插值数组[start,,,,,,end, (没有用到的颜色)]\n * @param startAngle 实际开始的angle\n * @param endAngle 实际结束的angle\n * @param minW\n * @param minH\n * @returns\n */\nexport function createConicalGradient(\n context: IContext2d,\n stops: Array<[number, string]>,\n x: number,\n y: number,\n deltaAngle: number,\n startAngle: number,\n endAngle: number,\n minW: number,\n minH: number\n): null | CanvasPattern {\n const deltaDeg = Math.floor((deltaAngle * 180) / Math.PI);\n\n const conicalCanvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n\n if (!conicalCtx) {\n return null;\n }\n const width = ConicalPatternStore.GetSize(minW);\n const height = ConicalPatternStore.GetSize(minH);\n let pattern = ConicalPatternStore.Get(stops, x, y, startAngle, endAngle, width, height);\n if (pattern) {\n return pattern;\n }\n\n const r = Math.sqrt(\n Math.max(\n Math.max(Math.pow(x, 2) + Math.pow(y, 2), Math.pow(width - x, 2) + Math.pow(y, 2)),\n Math.max(Math.pow(width - x, 2) + Math.pow(height - y, 2), Math.pow(x, 2) + Math.pow(height - y, 2))\n )\n );\n // 每一度一个三角形\n const stepNum = deltaDeg + 1;\n const step = deltaAngle / Math.max(1, stepNum - 1);\n const colorInter = ColorInterpolate.getInstance().GetOrCreate(x, y, width, height, stops, stepNum);\n\n const lineWidth = (2 * Math.PI * r) / 360;\n\n conicalCanvas.width = width;\n conicalCanvas.height = height;\n conicalCtx.setTransform(1, 0, 0, 1, 0, 0);\n conicalCtx.clearRect(0, 0, width, height);\n conicalCtx.translate(x, y);\n conicalCtx.rotate(startAngle);\n for (let i = 0, len = stepNum - 1; i < len; i++) {\n if (startAngle + i * step > endAngle) {\n break;\n }\n const color = colorInter.getColor(i);\n conicalCtx.beginPath();\n conicalCtx.rotate(step);\n conicalCtx.moveTo(0, 0);\n conicalCtx.lineTo(r, -2 * lineWidth);\n conicalCtx.lineTo(r, 0);\n conicalCtx.fillStyle = color;\n conicalCtx.closePath();\n conicalCtx.fill();\n }\n\n const imageData = conicalCtx.getImageData(0, 0, width, height);\n\n conicalCanvas.width = imageData.width;\n conicalCanvas.height = imageData.height;\n conicalCtx.putImageData(imageData, 0, 0);\n pattern = context.createPattern(conicalCanvas, 'no-repeat');\n pattern && ConicalPatternStore.Set(stops, x, y, startAngle, endAngle, pattern, width, height);\n return pattern;\n}\n"]}
1
+ {"version":3,"sources":["../src/canvas/conical-gradient.ts"],"names":[],"mappings":"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","file":"conical-gradient.js","sourcesContent":["/**\n * 环形渐变部分源码借鉴https://github.com/parksben/create-conical-gradient/blob/master/LICENSE\n * MIT License\n\n * Copyright (c) 2020 parksben\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { pi2, LRU } from '@visactor/vutils';\nimport { application } from '../application';\nimport type { IConicalGradient, IContext2d } from '../interface';\nimport { interpolateColor } from '../color-string';\n\nclass ConicalCanvas {\n static canvas: HTMLCanvasElement;\n static ctx: CanvasRenderingContext2D | null;\n\n static GetCanvas() {\n try {\n if (!ConicalCanvas.canvas) {\n ConicalCanvas.canvas = application.global.createCanvas({});\n }\n return ConicalCanvas.canvas;\n } catch (err) {\n return null;\n }\n }\n\n static GetCtx() {\n if (!ConicalCanvas.ctx) {\n const conicalCanvas = ConicalCanvas.GetCanvas();\n ConicalCanvas.ctx = conicalCanvas.getContext('2d');\n }\n return ConicalCanvas.ctx;\n }\n}\n\n// todo 目前环形渐变缓存还是依赖于x和y,后续优化环形渐变\nexport class ColorInterpolate extends LRU {\n private readonly rgbaSet: Uint8ClampedArray;\n private cacheParams: {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n } = { CLEAN_THRESHOLD: 100, L_TIME: 1e3 };\n static _instance: ColorInterpolate;\n\n static getInstance() {\n if (!ColorInterpolate._instance) {\n ColorInterpolate._instance = new ColorInterpolate();\n }\n return ColorInterpolate._instance;\n }\n\n constructor(stops: [number, string][] = [], precision = 100) {\n super();\n const canvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n canvas.width = precision;\n canvas.height = 1;\n if (!conicalCtx) {\n return;\n }\n conicalCtx.translate(0, 0);\n if (!conicalCtx) {\n throw new Error('获取ctx发生错误');\n }\n\n const gradient = conicalCtx.createLinearGradient(0, 0, precision, 0);\n stops.forEach(stop => {\n gradient.addColorStop(stop[0], stop[1]);\n });\n\n conicalCtx.fillStyle = gradient;\n conicalCtx.fillRect(0, 0, precision, 1);\n\n this.rgbaSet = conicalCtx.getImageData(0, 0, precision, 1).data;\n }\n\n getColor(offset: number): string {\n const rgba = this.rgbaSet.slice(4 * offset, 4 * offset + 4);\n return `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${rgba[3] / 255})`;\n }\n\n dataMap: Map<string, { data: ColorInterpolate; timestamp: number[] }> = new Map();\n // static lastCache: {\n // stops: [number, string][],\n // precision: number,\n // colorInter: ColorInterpolate,\n // step: number,\n // stepNum: number,\n // r: number,\n // lineWidth: number,\n // } | null = null;\n\n GetOrCreate(x: number, y: number, w: number, h: number, stops: [number, string][] = [], precision = 100) {\n let str = `${x}${y}${w}${h}`;\n stops.forEach(item => (str += item.join()));\n str += precision;\n let colorInter = this.dataMap.get(str);\n if (!colorInter) {\n const data = new ColorInterpolate(stops, precision);\n colorInter = { data, timestamp: [] };\n this.addLimitedTimestamp(colorInter, Date.now(), {});\n this.dataMap.set(str, colorInter);\n }\n this.clearCache(this.dataMap, this.cacheParams);\n return colorInter.data;\n }\n}\n\nclass ConicalPatternStore {\n private static cache: {\n [key: string]: {\n width: number;\n height: number;\n pattern: CanvasPattern;\n }[];\n } = {};\n private static ImageSize = [20, 40, 80, 160, 320, 640, 1280, 2560];\n\n static GetSize(minSize: number): number {\n for (let i = 0; i < ConicalPatternStore.ImageSize.length; i++) {\n if (ConicalPatternStore.ImageSize[i] >= minSize) {\n return ConicalPatternStore.ImageSize[i];\n }\n }\n return minSize;\n }\n\n static Get(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n w: number,\n h: number\n ): CanvasPattern | null {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n const data = ConicalPatternStore.cache[key];\n if (!data || data.length === 0) {\n return null;\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i].width >= w && data[i].height >= h) {\n return data[i].pattern;\n }\n }\n return null;\n }\n\n static Set(\n stops: Array<[number, string]>,\n x: number,\n y: number,\n startAngle: number,\n endAngle: number,\n pattern: CanvasPattern,\n w: number,\n h: number\n ) {\n const key = ConicalPatternStore.GenKey(stops, x, y, startAngle, endAngle);\n // 必然是顺序的,因为如果能get到的话就不需要set\n if (!ConicalPatternStore.cache[key]) {\n ConicalPatternStore.cache[key] = [\n {\n width: w,\n height: h,\n pattern\n }\n ];\n } else {\n ConicalPatternStore.cache[key].push({\n width: w,\n height: h,\n pattern\n });\n }\n }\n\n static GenKey(stops: Array<[number, string]>, x: number, y: number, startAngle: number, endAngle: number): string {\n return `${x},${y},${startAngle},${endAngle},${stops.join()}`;\n }\n}\n\nexport function getConicGradientAt(x: number, y: number, angle: number, color: IConicalGradient) {\n const { stops, startAngle, endAngle } = color;\n\n // TODO 格式化angle\n while (angle < 0) {\n angle += pi2;\n }\n while (angle > pi2) {\n angle -= pi2;\n }\n\n if (angle < startAngle) {\n return stops[0].color;\n }\n if (angle > endAngle) {\n return stops[0].color;\n }\n let percent = (angle - startAngle) / (endAngle - startAngle);\n let startStop: any;\n let endStop: any;\n for (let i = 0; i < stops.length; i++) {\n if (stops[i].offset >= percent) {\n startStop = stops[i - 1];\n endStop = stops[i];\n break;\n }\n }\n percent = (percent - startStop.offset) / (endStop.offset - startStop.offset);\n return interpolateColor(startStop.color, endStop.color, percent, false);\n}\n\n/**\n * 环形渐变效果\n * @param context\n * @param stops\n * @param x\n * @param y\n * @param deltaAngle 用于细分出颜色插值数组[start,,,,,,end, (没有用到的颜色)]\n * @param startAngle 实际开始的angle\n * @param endAngle 实际结束的angle\n * @param minW\n * @param minH\n * @returns\n */\nexport function createConicalGradient(\n context: IContext2d,\n stops: Array<[number, string]>,\n x: number,\n y: number,\n deltaAngle: number,\n startAngle: number,\n endAngle: number,\n minW: number,\n minH: number\n): null | CanvasPattern {\n const deltaDeg = Math.floor((deltaAngle * 180) / Math.PI);\n\n const conicalCanvas = ConicalCanvas.GetCanvas();\n const conicalCtx = ConicalCanvas.GetCtx();\n\n if (!conicalCtx) {\n return null;\n }\n const width = ConicalPatternStore.GetSize(minW);\n const height = ConicalPatternStore.GetSize(minH);\n let pattern = ConicalPatternStore.Get(stops, x, y, startAngle, endAngle, width, height);\n if (pattern) {\n return pattern;\n }\n\n const r = Math.sqrt(\n Math.max(\n Math.max(Math.pow(x, 2) + Math.pow(y, 2), Math.pow(width - x, 2) + Math.pow(y, 2)),\n Math.max(Math.pow(width - x, 2) + Math.pow(height - y, 2), Math.pow(x, 2) + Math.pow(height - y, 2))\n )\n );\n // 每一度一个三角形\n const stepNum = deltaDeg + 1;\n const step = deltaAngle / Math.max(1, stepNum - 1);\n const colorInter = ColorInterpolate.getInstance().GetOrCreate(x, y, width, height, stops, stepNum);\n\n const lineWidth = (2 * Math.PI * r) / 360;\n\n conicalCanvas.width = width;\n conicalCanvas.height = height;\n conicalCtx.setTransform(1, 0, 0, 1, 0, 0);\n conicalCtx.clearRect(0, 0, width, height);\n conicalCtx.translate(x, y);\n conicalCtx.rotate(startAngle);\n for (let i = 0, len = stepNum - 1; i < len; i++) {\n if (startAngle + i * step > endAngle) {\n break;\n }\n const color = colorInter.getColor(i);\n conicalCtx.beginPath();\n conicalCtx.rotate(step);\n conicalCtx.moveTo(0, 0);\n conicalCtx.lineTo(r, -2 * lineWidth);\n conicalCtx.lineTo(r, 0);\n conicalCtx.fillStyle = color;\n conicalCtx.closePath();\n conicalCtx.fill();\n }\n\n const imageData = conicalCtx.getImageData(0, 0, width, height);\n\n conicalCanvas.width = imageData.width;\n conicalCanvas.height = imageData.height;\n conicalCtx.putImageData(imageData, 0, 0);\n pattern = context.createPattern(conicalCanvas, 'no-repeat');\n pattern && ConicalPatternStore.Set(stops, x, y, startAngle, endAngle, pattern, width, height);\n return pattern;\n}\n"]}
@@ -1,24 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
- var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
- if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- }, __metadata = this && this.__metadata || function(k, v) {
8
- if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
9
- };
10
-
11
3
  Object.defineProperty(exports, "__esModule", {
12
4
  value: !0
13
5
  }), exports.BaseCanvas = void 0;
14
6
 
15
- const inversify_lite_1 = require("../../common/inversify-lite"), DefaultConfig = {
7
+ const DefaultConfig = {
16
8
  WIDTH: 500,
17
9
  HEIGHT: 500,
18
10
  DPR: 1
19
11
  };
20
12
 
21
- let BaseCanvas = class {
13
+ class BaseCanvas {
22
14
  get displayWidth() {
23
15
  return this._pixelWidth / this._dpr;
24
16
  }
@@ -102,8 +94,7 @@ let BaseCanvas = class {
102
94
  release(...params) {
103
95
  this.controled && this._nativeCanvas.parentElement && this._nativeCanvas.parentElement.removeChild(this._nativeCanvas);
104
96
  }
105
- };
97
+ }
106
98
 
107
- BaseCanvas.env = "browser", BaseCanvas = __decorate([ (0, inversify_lite_1.injectable)(), __metadata("design:paramtypes", [ Object ]) ], BaseCanvas),
108
- exports.BaseCanvas = BaseCanvas;
99
+ exports.BaseCanvas = BaseCanvas, BaseCanvas.env = "browser";
109
100
  //# sourceMappingURL=base-canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/contributions/base-canvas.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAAyD;AAGzD,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,CAAC;CACP,CAAC;AAGK,IAAe,UAAU,GAAzB,MAAe,UAAU;IAoB9B,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,EAAU;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,EAAU;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,IAAI,MAAM,CAAC,MAAc;QACvB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,UAAU,CAAC,GAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,GAAW;QAEjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAMD,YAAY,MAAwB;;QAClC,MAAM,EACJ,YAAY,EACZ,KAAK,GAAG,aAAa,CAAC,KAAK,EAC3B,MAAM,GAAG,aAAa,CAAC,MAAM,EAC7B,GAAG,GAAG,aAAa,CAAC,GAAG,EACvB,CAAC,EACD,CAAC,EACD,EAAE,EACF,eAAe,GAAG,IAAI,EACvB,GAAG,MAAM,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,GAAG,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QAGjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,MAAA,YAAY,CAAC,EAAE,mCAAI,EAAE,CAAC;QACjC,IAAI,EAAE,EAAE;YACN,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,IAAI;QACF,OAAO;IACT,CAAC;IACD,IAAI;QACF,OAAO;IACT,CAAC;IAID,aAAa;QACX,OAAO;IACT,CAAC;IAED,UAAU,CAAC,MAAiC;QAC1C,OAAO;IACT,CAAC;IAOD,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,OAAO;IACT,CAAC;IAKD,SAAS,CAAC,QAAiB,EAAE,OAAgB;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,OAAiF;QAC7F,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,qBAAqB;QACnB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACtG;IACH,CAAC;;AA3KM,cAAG,GAAY,SAAS,CAAC;AADZ,UAAU;IAD/B,IAAA,2BAAU,GAAE;;GACS,UAAU,CA6K/B;AA7KqB,gCAAU","file":"base-canvas.js","sourcesContent":["import { injectable } from '../../common/inversify-lite';\nimport type { CanvasConfigType, ICanvas, IContext2d, EnvType } from '../../interface';\n\nconst DefaultConfig = {\n WIDTH: 500,\n HEIGHT: 500,\n DPR: 1\n};\n\n@injectable()\nexport abstract class BaseCanvas implements ICanvas {\n static env: EnvType = 'browser';\n // 显示的宽高,如果是离屏canvas,就是pixelWidth / pixelRatio\n protected _displayWidth: number; // 显示的宽度\n protected _displayHeight: number; // 显示的高度\n protected _id: number | string;\n // 像素宽高\n protected _pixelWidth: number; // 像素宽度\n protected _pixelHeight: number; // 像素高度\n\n protected _x: number;\n protected _y: number;\n protected _dpr: number;\n\n protected _container?: HTMLElement | null;\n protected _nativeCanvas: HTMLCanvasElement;\n protected _context: IContext2d;\n protected _visiable: boolean;\n protected controled: boolean;\n\n get displayWidth(): number {\n return this._pixelWidth / this._dpr;\n }\n\n get displayHeight(): number {\n return this._pixelHeight / this._dpr;\n }\n\n get id(): number | string {\n return this._id;\n }\n get x(): number {\n return this._x;\n }\n set x(_x: number) {\n this._x = _x;\n }\n get y(): number {\n return this._y;\n }\n set y(_y: number) {\n this._y = _y;\n }\n get nativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n\n get width(): number {\n return this._pixelWidth;\n }\n set width(width: number) {\n this._pixelWidth = width;\n this._displayWidth = width / (this._dpr || 1);\n }\n\n get height(): number {\n return this._pixelHeight;\n }\n set height(height: number) {\n this._pixelHeight = height;\n this._displayHeight = height / (this._dpr || 1);\n }\n getContext(str?: string): IContext2d {\n return this._context;\n }\n\n get visiable(): boolean {\n return this._visiable;\n }\n set visiable(visiable: boolean) {\n this._visiable = visiable;\n visiable ? this.show() : this.hide();\n }\n\n get dpr(): number {\n return this._dpr;\n }\n set dpr(dpr: number) {\n // this._lastPixelRatio = this._pixelRatio;\n this._dpr = dpr;\n this.resize(this._displayWidth, this._displayHeight);\n }\n\n /**\n * 通过canvas生成一个wrap对象,初始化时不会再设置canvas的属性\n * @param params\n */\n constructor(params: CanvasConfigType) {\n const {\n nativeCanvas,\n width = DefaultConfig.WIDTH,\n height = DefaultConfig.HEIGHT,\n dpr = DefaultConfig.DPR,\n x,\n y,\n id,\n canvasControled = true\n } = params;\n const offsetX = 0;\n const offsetY = 0;\n this._x = x ?? offsetX;\n this._y = y ?? offsetY;\n this._pixelWidth = width * dpr;\n this._pixelHeight = height * dpr;\n this._visiable = params.visiable !== false;\n this.controled = canvasControled;\n\n // 离屏canvas\n this._displayWidth = width;\n this._displayHeight = height;\n this._dpr = dpr;\n this._nativeCanvas = nativeCanvas;\n this._id = nativeCanvas.id ?? id;\n if (id) {\n nativeCanvas.id = id;\n }\n\n this.init(params);\n }\n\n getNativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n hide() {\n return;\n }\n show() {\n return;\n }\n\n abstract init(params: CanvasConfigType): void;\n\n applyPosition(): void {\n return;\n }\n\n resetStyle(params: Partial<CanvasConfigType>): void {\n return;\n }\n\n /**\n * 设置canvas的size大小,设置context的scale\n * @param width\n * @param height\n */\n resize(width: number, height: number): void {\n return;\n }\n\n toDataURL(): string;\n toDataURL(mimeType: 'image/png'): string;\n toDataURL(mimeType: 'image/jpeg', quality: number): string;\n toDataURL(mimeType?: string, quality?: number) {\n return '';\n }\n\n readPixels(x: number, y: number, w: number, h: number): ImageData | Promise<ImageData> {\n return this._context.getImageData(x, y, w, h);\n }\n\n convertToBlob(options?: { type?: string | undefined; quality?: number | undefined } | undefined): Promise<Blob> {\n throw new Error('暂未实现');\n }\n\n transferToImageBitmap(): ImageBitmap {\n throw new Error('暂未实现');\n }\n\n release(...params: any): void {\n if (this.controled) {\n this._nativeCanvas.parentElement && this._nativeCanvas.parentElement.removeChild(this._nativeCanvas);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/canvas/contributions/base-canvas.ts"],"names":[],"mappings":"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","file":"base-canvas.js","sourcesContent":["import type { CanvasConfigType, ICanvas, IContext2d, EnvType } from '../../interface';\n\nconst DefaultConfig = {\n WIDTH: 500,\n HEIGHT: 500,\n DPR: 1\n};\n\nexport abstract class BaseCanvas implements ICanvas {\n static env: EnvType = 'browser';\n // 显示的宽高,如果是离屏canvas,就是pixelWidth / pixelRatio\n protected _displayWidth: number; // 显示的宽度\n protected _displayHeight: number; // 显示的高度\n protected _id: number | string;\n // 像素宽高\n protected _pixelWidth: number; // 像素宽度\n protected _pixelHeight: number; // 像素高度\n\n protected _x: number;\n protected _y: number;\n protected _dpr: number;\n\n protected _container?: HTMLElement | null;\n protected _nativeCanvas: HTMLCanvasElement;\n protected _context: IContext2d;\n protected _visiable: boolean;\n protected controled: boolean;\n\n get displayWidth(): number {\n return this._pixelWidth / this._dpr;\n }\n\n get displayHeight(): number {\n return this._pixelHeight / this._dpr;\n }\n /**\n * TODO\n * get\\set 方法看看是否可以删掉\n */\n get id(): number | string {\n return this._id;\n }\n get x(): number {\n return this._x;\n }\n set x(_x: number) {\n this._x = _x;\n }\n get y(): number {\n return this._y;\n }\n set y(_y: number) {\n this._y = _y;\n }\n get nativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n\n get width(): number {\n return this._pixelWidth;\n }\n set width(width: number) {\n this._pixelWidth = width;\n this._displayWidth = width / (this._dpr || 1);\n }\n\n get height(): number {\n return this._pixelHeight;\n }\n set height(height: number) {\n this._pixelHeight = height;\n this._displayHeight = height / (this._dpr || 1);\n }\n getContext(str?: string): IContext2d {\n return this._context;\n }\n\n get visiable(): boolean {\n return this._visiable;\n }\n set visiable(visiable: boolean) {\n this._visiable = visiable;\n visiable ? this.show() : this.hide();\n }\n\n get dpr(): number {\n return this._dpr;\n }\n set dpr(dpr: number) {\n // this._lastPixelRatio = this._pixelRatio;\n this._dpr = dpr;\n this.resize(this._displayWidth, this._displayHeight);\n }\n\n /**\n * 通过canvas生成一个wrap对象,初始化时不会再设置canvas的属性\n * @param params\n */\n constructor(params: CanvasConfigType) {\n const {\n nativeCanvas,\n width = DefaultConfig.WIDTH,\n height = DefaultConfig.HEIGHT,\n dpr = DefaultConfig.DPR,\n x,\n y,\n id,\n canvasControled = true\n } = params;\n const offsetX = 0;\n const offsetY = 0;\n this._x = x ?? offsetX;\n this._y = y ?? offsetY;\n this._pixelWidth = width * dpr;\n this._pixelHeight = height * dpr;\n this._visiable = params.visiable !== false;\n this.controled = canvasControled;\n\n // 离屏canvas\n this._displayWidth = width;\n this._displayHeight = height;\n this._dpr = dpr;\n this._nativeCanvas = nativeCanvas;\n this._id = nativeCanvas.id ?? id;\n if (id) {\n nativeCanvas.id = id;\n }\n\n this.init(params);\n }\n\n getNativeCanvas(): HTMLCanvasElement {\n return this._nativeCanvas;\n }\n hide() {\n return;\n }\n show() {\n return;\n }\n\n abstract init(params: CanvasConfigType): void;\n\n applyPosition(): void {\n return;\n }\n\n resetStyle(params: Partial<CanvasConfigType>): void {\n return;\n }\n\n /**\n * 设置canvas的size大小,设置context的scale\n * @param width\n * @param height\n */\n resize(width: number, height: number): void {\n return;\n }\n\n toDataURL(): string;\n toDataURL(mimeType: 'image/png'): string;\n toDataURL(mimeType: 'image/jpeg', quality: number): string;\n toDataURL(mimeType?: string, quality?: number) {\n return '';\n }\n\n readPixels(x: number, y: number, w: number, h: number): ImageData | Promise<ImageData> {\n return this._context.getImageData(x, y, w, h);\n }\n\n convertToBlob(options?: { type?: string | undefined; quality?: number | undefined } | undefined): Promise<Blob> {\n throw new Error('暂未实现');\n }\n\n transferToImageBitmap(): ImageBitmap {\n throw new Error('暂未实现');\n }\n\n release(...params: any): void {\n if (this.controled) {\n this._nativeCanvas.parentElement && this._nativeCanvas.parentElement.removeChild(this._nativeCanvas);\n }\n }\n}\n"]}
@@ -47,5 +47,4 @@ const vutils_1 = require("@visactor/vutils"), constants_1 = require("../graphic/
47
47
  return result;
48
48
  };
49
49
 
50
- exports.draw3dItem = draw3dItem;
51
- //# sourceMappingURL=3d-interceptor.js.map
50
+ exports.draw3dItem = draw3dItem;
@@ -56,4 +56,5 @@ class BoundsContext {
56
56
  release(...params) {}
57
57
  }
58
58
 
59
- exports.BoundsContext = BoundsContext;
59
+ exports.BoundsContext = BoundsContext;
60
+ //# sourceMappingURL=bounds-context.js.map
@@ -292,4 +292,4 @@ function bezierCurversToPath(bezierCurves) {
292
292
 
293
293
  exports.pathToBezierCurves = pathToBezierCurves, exports.applyTransformOnBezierCurves = applyTransformOnBezierCurves,
294
294
  exports.bezierCurversToPath = bezierCurversToPath;
295
- //# sourceMappingURL=morphing-utils.js.map
295
+ //# sourceMappingURL=morphing-utils.js.map
@@ -61,4 +61,4 @@ exports.enumCommandMap = {
61
61
  Q: 7,
62
62
  R: 8
63
63
  }, exports.parseSvgPath = parseSvgPath;
64
- //# sourceMappingURL=path-svg.js.map
64
+ //# sourceMappingURL=path-svg.js.map
@@ -39,8 +39,8 @@ function getProportionPoint(point, segment, length, dx, dy) {
39
39
  };
40
40
  }
41
41
 
42
+ //# sourceMappingURL=polygon.js.map
42
43
  Object.defineProperty(exports, "__esModule", {
43
44
  value: !0
44
45
  }), exports.drawRoundedPolygon = exports.drawPolygon = void 0, exports.drawPolygon = drawPolygon,
45
- exports.drawRoundedPolygon = drawRoundedPolygon;
46
- //# sourceMappingURL=polygon.js.map
46
+ exports.drawRoundedPolygon = drawRoundedPolygon;
@@ -24,4 +24,4 @@ const vutils_1 = require("@visactor/vutils"), normalizeRectAttributes = attribut
24
24
  };
25
25
 
26
26
  exports.normalizeRectAttributes = normalizeRectAttributes;
27
- //# sourceMappingURL=rect-utils.js.map
27
+ //# sourceMappingURL=rect-utils.js.map
@@ -121,5 +121,5 @@ function drawAreaBlock(path, topList, bottomList, params) {
121
121
  path.closePath();
122
122
  }
123
123
 
124
- exports.drawAreaSegments = drawAreaSegments;
125
124
  //# sourceMappingURL=render-area.js.map
125
+ exports.drawAreaSegments = drawAreaSegments;
@@ -13,5 +13,4 @@ function renderCommandList(commandList, context, x = 0, y = 0, sx = 1, sy = 1, z
13
13
  }
14
14
  }
15
15
 
16
- exports.renderCommandList = renderCommandList;
17
- //# sourceMappingURL=render-command-list.js.map
16
+ exports.renderCommandList = renderCommandList;
@@ -99,4 +99,4 @@ function drawIncrementalAreaSegments(path, lastSeg, segments, params) {
99
99
 
100
100
  exports.drawSegments = drawSegments, exports.drawIncrementalSegments = drawIncrementalSegments,
101
101
  exports.drawIncrementalAreaSegments = drawIncrementalAreaSegments;
102
- //# sourceMappingURL=render-curve.js.map
102
+ //# sourceMappingURL=render-curve.js.map
@@ -19,4 +19,4 @@ function drawSegItem(ctx, curve, endPercent, params) {
19
19
  }
20
20
 
21
21
  exports.drawSegItem = drawSegItem;
22
- //# sourceMappingURL=render-utils.js.map
22
+ //# sourceMappingURL=render-utils.js.map
@@ -95,4 +95,4 @@ class ReflectSegContext extends SegContext {
95
95
  }
96
96
 
97
97
  exports.ReflectSegContext = ReflectSegContext;
98
- //# sourceMappingURL=seg-context.js.map
98
+ //# sourceMappingURL=seg-context.js.map
@@ -0,0 +1,41 @@
1
+ import { type IPointLike } from '@visactor/vutils';
2
+ import type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';
3
+ export declare class CatmullRomClosed implements ICurvedSegment {
4
+ private _lastDefined1?;
5
+ private _lastDefined2?;
6
+ context: ISegPath2D;
7
+ protected startPoint?: IPointLike;
8
+ lastPoint0?: IPointLike;
9
+ lastPoint1?: IPointLike;
10
+ constructor(context: ISegPath2D, alpha?: number, startPoint?: IPointLike);
11
+ _alpha: number;
12
+ _x: number;
13
+ _y: number;
14
+ _x0: number;
15
+ _x1: number;
16
+ _y0: number;
17
+ _y1: number;
18
+ _x2: number;
19
+ _y2: number;
20
+ _x3: number;
21
+ _y3: number;
22
+ _x4: number;
23
+ _y4: number;
24
+ _x5: number;
25
+ _y5: number;
26
+ _line: number;
27
+ _point: number;
28
+ _l01_a: number;
29
+ _l12_a: number;
30
+ _l23_a: number;
31
+ _l01_2a: number;
32
+ _l12_2a: number;
33
+ _l23_2a: number;
34
+ areaStart(): void;
35
+ areaEnd(): void;
36
+ lineStart(): void;
37
+ lineEnd(): void;
38
+ point(p: IPointLike): void;
39
+ tryUpdateLength(): number;
40
+ }
41
+ export declare const genCatmullRomClosedSegments: (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.genCatmullRomClosedSegments = exports.CatmullRomClosed = void 0;
6
+
7
+ const catmull_rom_1 = require("./catmull-rom");
8
+
9
+ class CatmullRomClosed {
10
+ constructor(context, alpha = .5, startPoint) {
11
+ this.context = context, this.startPoint = startPoint, this._alpha = alpha;
12
+ }
13
+ areaStart() {
14
+ this._line = 0;
15
+ }
16
+ areaEnd() {
17
+ this._line = NaN;
18
+ }
19
+ lineStart() {
20
+ this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN,
21
+ this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;
22
+ }
23
+ lineEnd() {
24
+ switch (this._point) {
25
+ case 1:
26
+ this.context.moveTo(this._x3, this._y3, this.lastPoint1), this.context.closePath();
27
+ break;
28
+
29
+ case 2:
30
+ this.context.lineTo(this._x3, this._y3, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1),
31
+ this.context.closePath();
32
+ break;
33
+
34
+ case 3:
35
+ this.point({
36
+ x: this._x3,
37
+ y: this._y3
38
+ }), this.point({
39
+ x: this._x4,
40
+ y: this._y4
41
+ }), this.point({
42
+ x: this._x5,
43
+ y: this._y5
44
+ });
45
+ }
46
+ }
47
+ point(p) {
48
+ const {x: x, y: y} = p;
49
+ if (this._point) {
50
+ const x23 = this._x2 - x, y23 = this._y2 - y;
51
+ this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
52
+ }
53
+ switch (this._point) {
54
+ case 0:
55
+ this._point = 1, this._x3 = x, this._y3 = y;
56
+ break;
57
+
58
+ case 1:
59
+ this._point = 2, this.context.moveTo(this._x4 = x, this._y4 = y, p);
60
+ break;
61
+
62
+ case 2:
63
+ this._point = 3, this._x5 = x, this._y5 = y;
64
+ break;
65
+
66
+ default:
67
+ (0, catmull_rom_1.point)(this, x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, p);
68
+ }
69
+ this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a,
70
+ this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = x,
71
+ this._y0 = this._y1, this._y1 = this._y2, this._y2 = y, this._lastDefined1 = this._lastDefined2,
72
+ this._lastDefined2 = p.defined, this.lastPoint0 = this.lastPoint1, this.lastPoint1 = p;
73
+ }
74
+ tryUpdateLength() {
75
+ return this.context.tryUpdateLength();
76
+ }
77
+ }
78
+
79
+ exports.CatmullRomClosed = CatmullRomClosed, exports.genCatmullRomClosedSegments = (0,
80
+ catmull_rom_1.commonGenCatmullRomSegments)("catmullRomClosed", CatmullRomClosed);
81
+ //# sourceMappingURL=catmull-rom-close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/segment/catmull-rom-close.ts"],"names":[],"mappings":"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","file":"catmull-rom-close.js","sourcesContent":["import { epsilon, type IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport { commonGenCatmullRomSegments, point } from './catmull-rom';\n\nexport class CatmullRomClosed implements ICurvedSegment {\n private _lastDefined1?: boolean;\n private _lastDefined2?: boolean;\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, alpha: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n this._alpha = alpha;\n }\n _alpha: number;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _x2: number;\n _y2: number;\n _x3: number;\n _y3: number;\n _x4: number;\n _y4: number;\n _x5: number;\n _y5: number;\n _line: number;\n _point: number;\n _l01_a: number;\n _l12_a: number;\n _l23_a: number;\n _l01_2a: number;\n _l12_2a: number;\n _l23_2a: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 =\n this._x1 =\n this._x2 =\n this._x3 =\n this._x4 =\n this._x5 =\n this._y0 =\n this._y1 =\n this._y2 =\n this._y3 =\n this._y4 =\n this._y5 =\n NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n }\n lineEnd() {\n switch (this._point) {\n case 1: {\n this.context.moveTo(this._x3, this._y3, this.lastPoint1);\n this.context.closePath();\n break;\n }\n case 2: {\n this.context.lineTo(\n this._x3,\n this._y3,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n this.context.closePath();\n break;\n }\n case 3: {\n this.point({ x: this._x3, y: this._y3 });\n this.point({ x: this._x4, y: this._y4 });\n this.point({ x: this._x5, y: this._y5 });\n break;\n }\n }\n }\n point(p: IPointLike): void {\n const { x, y } = p;\n\n if (this._point) {\n const x23 = this._x2 - x;\n const y23 = this._y2 - y;\n this._l23_a = Math.sqrt((this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n (this._x3 = x), (this._y3 = y);\n break;\n case 1:\n this._point = 2;\n this.context.moveTo((this._x4 = x), (this._y4 = y), p);\n break;\n case 2:\n this._point = 3;\n (this._x5 = x), (this._y5 = y);\n break;\n default:\n point(this as any, x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p);\n break;\n }\n\n (this._l01_a = this._l12_a), (this._l12_a = this._l23_a);\n (this._l01_2a = this._l12_2a), (this._l12_2a = this._l23_2a);\n (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = x);\n (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = y);\n\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\n// export function genCatmullRomClosedTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n// return genCurveSegments(path, points, 2);\n// }\n\nexport const genCatmullRomClosedSegments = commonGenCatmullRomSegments('catmullRomClosed', CatmullRomClosed);\n\n// export function genCatmullRomClosedSegments(\n// points: IPointLike[],\n// alpha: number,\n// params: IGenSegmentParams = {}\n// ): ISegPath2D | null {\n// const { direction, startPoint } = params;\n// if (points.length < 2 - Number(!!startPoint)) {\n// return null;\n// }\n// if (points.length < 3 - Number(!!startPoint)) {\n// return genLinearSegments(points, params);\n// }\n\n// const segContext = genSegContext('catmullRom', direction, points);\n\n// const gatmullRom = new CatmullRomClosed(segContext, alpha, startPoint);\n\n// genCatmullRomClosedTypeSegments(gatmullRom, points);\n\n// return segContext;\n// }\n"]}
@@ -0,0 +1,38 @@
1
+ import { type IPointLike } from '@visactor/vutils';
2
+ import type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';
3
+ import type { ICurveType } from '../../interface';
4
+ export declare function point(curveClass: CatmullRom, x: number, y: number, defined: boolean, p: IPointLike): void;
5
+ export declare class CatmullRom implements ICurvedSegment {
6
+ private _lastDefined1?;
7
+ private _lastDefined2?;
8
+ context: ISegPath2D;
9
+ protected startPoint?: IPointLike;
10
+ lastPoint0?: IPointLike;
11
+ lastPoint1?: IPointLike;
12
+ constructor(context: ISegPath2D, alpha?: number, startPoint?: IPointLike);
13
+ _alpha: number;
14
+ _x: number;
15
+ _y: number;
16
+ _x0: number;
17
+ _x1: number;
18
+ _y0: number;
19
+ _y1: number;
20
+ _x2: number;
21
+ _y2: number;
22
+ _line: number;
23
+ _point: number;
24
+ _l01_a: number;
25
+ _l12_a: number;
26
+ _l23_a: number;
27
+ _l01_2a: number;
28
+ _l12_2a: number;
29
+ _l23_2a: number;
30
+ areaStart(): void;
31
+ areaEnd(): void;
32
+ lineStart(): void;
33
+ lineEnd(): void;
34
+ point(p: IPointLike): void;
35
+ tryUpdateLength(): number;
36
+ }
37
+ export declare function commonGenCatmullRomSegments(type: ICurveType, cons: any): (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D | null;
38
+ export declare const genCatmullRomSegments: (points: IPointLike[], alpha: number, params?: IGenSegmentParams) => ISegPath2D | null;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.genCatmullRomSegments = exports.commonGenCatmullRomSegments = exports.CatmullRom = exports.point = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), linear_1 = require("./linear"), common_1 = require("./common");
8
+
9
+ function point(curveClass, x, y, defined, p) {
10
+ let x1 = curveClass._x1, y1 = curveClass._y1, x2 = curveClass._x2, y2 = curveClass._y2;
11
+ if (curveClass._l01_a > vutils_1.epsilon) {
12
+ const a = 2 * curveClass._l01_2a + 3 * curveClass._l01_a * curveClass._l12_a + curveClass._l12_2a, n = 3 * curveClass._l01_a * (curveClass._l01_a + curveClass._l12_a);
13
+ x1 = (x1 * a - curveClass._x0 * curveClass._l12_2a + curveClass._x2 * curveClass._l01_2a) / n,
14
+ y1 = (y1 * a - curveClass._y0 * curveClass._l12_2a + curveClass._y2 * curveClass._l01_2a) / n;
15
+ }
16
+ if (curveClass._l23_a > vutils_1.epsilon) {
17
+ const b = 2 * curveClass._l23_2a + 3 * curveClass._l23_a * curveClass._l12_a + curveClass._l12_2a, m = 3 * curveClass._l23_a * (curveClass._l23_a + curveClass._l12_a);
18
+ x2 = (x2 * b + curveClass._x1 * curveClass._l23_2a - x * curveClass._l12_2a) / m,
19
+ y2 = (y2 * b + curveClass._y1 * curveClass._l23_2a - y * curveClass._l12_2a) / m;
20
+ }
21
+ curveClass.context.bezierCurveTo(x1, y1, x2, y2, curveClass._x2, curveClass._y2, defined, curveClass.lastPoint1);
22
+ }
23
+
24
+ exports.point = point;
25
+
26
+ class CatmullRom {
27
+ constructor(context, alpha = .5, startPoint) {
28
+ this.context = context, this.startPoint = startPoint, this._alpha = alpha;
29
+ }
30
+ areaStart() {
31
+ this._line = 0;
32
+ }
33
+ areaEnd() {
34
+ this._line = NaN;
35
+ }
36
+ lineStart() {
37
+ this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;
38
+ }
39
+ lineEnd() {
40
+ switch (this._point) {
41
+ case 2:
42
+ this.context.lineTo(this._x2, this._y2, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1);
43
+ break;
44
+
45
+ case 3:
46
+ this.point({
47
+ x: this._x2,
48
+ y: this._y2
49
+ });
50
+ }
51
+ (this._line || 0 !== this._line && 1 === this._point) && this.context.closePath(),
52
+ this._line = 1 - this._line;
53
+ }
54
+ point(p) {
55
+ const {x: x, y: y} = p;
56
+ if (this._point) {
57
+ const x23 = this._x2 - x, y23 = this._y2 - y;
58
+ this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
59
+ }
60
+ switch (this._point) {
61
+ case 0:
62
+ this._point = 1, this._line ? this.context.lineTo(x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2) : this.context.moveTo(x, y);
63
+ break;
64
+
65
+ case 1:
66
+ this._point = 2;
67
+ break;
68
+
69
+ case 2:
70
+ this._point = 3;
71
+
72
+ default:
73
+ point(this, x, y, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, p);
74
+ }
75
+ this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a,
76
+ this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = x,
77
+ this._y0 = this._y1, this._y1 = this._y2, this._y2 = y, this._lastDefined1 = this._lastDefined2,
78
+ this._lastDefined2 = p.defined, this.lastPoint0 = this.lastPoint1, this.lastPoint1 = p;
79
+ }
80
+ tryUpdateLength() {
81
+ return this.context.tryUpdateLength();
82
+ }
83
+ }
84
+
85
+ function commonGenCatmullRomSegments(type, cons) {
86
+ return function(points, alpha, params = {}) {
87
+ const {direction: direction, startPoint: startPoint} = params;
88
+ if (points.length < 2 - Number(!!startPoint)) return null;
89
+ if (points.length < 3 - Number(!!startPoint)) return (0, linear_1.genLinearSegments)(points, params);
90
+ const segContext = (0, common_1.genSegContext)(type, direction, points), gatmullRom = new cons(segContext, alpha, startPoint);
91
+ return (0, common_1.genCurveSegments)(gatmullRom, points, 2), segContext;
92
+ };
93
+ }
94
+
95
+ exports.CatmullRom = CatmullRom, exports.commonGenCatmullRomSegments = commonGenCatmullRomSegments,
96
+ exports.genCatmullRomSegments = commonGenCatmullRomSegments("catmullRom", CatmullRom);
97
+ //# sourceMappingURL=catmull-rom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/segment/catmull-rom.ts"],"names":[],"mappings":"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","file":"catmull-rom.js","sourcesContent":["import { epsilon, type IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport type { ICurveType } from '../../interface';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/basis.js\nexport function point(curveClass: CatmullRom, x: number, y: number, defined: boolean, p: IPointLike) {\n let x1 = curveClass._x1;\n let y1 = curveClass._y1;\n let x2 = curveClass._x2;\n let y2 = curveClass._y2;\n\n if (curveClass._l01_a > epsilon) {\n const a = 2 * curveClass._l01_2a + 3 * curveClass._l01_a * curveClass._l12_a + curveClass._l12_2a;\n const n = 3 * curveClass._l01_a * (curveClass._l01_a + curveClass._l12_a);\n x1 = (x1 * a - curveClass._x0 * curveClass._l12_2a + curveClass._x2 * curveClass._l01_2a) / n;\n y1 = (y1 * a - curveClass._y0 * curveClass._l12_2a + curveClass._y2 * curveClass._l01_2a) / n;\n }\n\n if (curveClass._l23_a > epsilon) {\n const b = 2 * curveClass._l23_2a + 3 * curveClass._l23_a * curveClass._l12_a + curveClass._l12_2a;\n const m = 3 * curveClass._l23_a * (curveClass._l23_a + curveClass._l12_a);\n x2 = (x2 * b + curveClass._x1 * curveClass._l23_2a - x * curveClass._l12_2a) / m;\n y2 = (y2 * b + curveClass._y1 * curveClass._l23_2a - y * curveClass._l12_2a) / m;\n }\n\n curveClass.context.bezierCurveTo(x1, y1, x2, y2, curveClass._x2, curveClass._y2, defined, curveClass.lastPoint1);\n}\n\nexport class CatmullRom implements ICurvedSegment {\n private _lastDefined1?: boolean;\n private _lastDefined2?: boolean;\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, alpha: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n this._alpha = alpha;\n }\n _alpha: number;\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _x2: number;\n _y2: number;\n _line: number;\n _point: number;\n _l01_a: number;\n _l12_a: number;\n _l23_a: number;\n _l01_2a: number;\n _l12_2a: number;\n _l23_2a: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(\n this._x2,\n this._y2,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n case 3:\n this.point({ x: this._x2, y: this._y2 });\n break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n const { x, y } = p;\n\n if (this._point) {\n const x23 = this._x2 - x;\n const y23 = this._y2 - y;\n this._l23_a = Math.sqrt((this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false)\n : this.context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3; // falls through\n default:\n point(this, x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p);\n break;\n }\n\n (this._l01_a = this._l12_a), (this._l12_a = this._l23_a);\n (this._l01_2a = this._l12_2a), (this._l12_2a = this._l23_2a);\n (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = x);\n (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = y);\n\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\n// export function genCatmullRomTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n// return genCurveSegments(path, points, 2);\n// }\n\nexport function commonGenCatmullRomSegments(type: ICurveType, cons: any) {\n return function genCatmullRomSegments(\n points: IPointLike[],\n alpha: number,\n params: IGenSegmentParams = {}\n ): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n\n const segContext = genSegContext(type, direction, points);\n\n const gatmullRom = new cons(segContext, alpha, startPoint);\n\n genCurveSegments(gatmullRom, points, 2);\n // genCatmullRomTypeSegments(gatmullRom, points);\n\n return segContext;\n };\n}\n\nexport const genCatmullRomSegments = commonGenCatmullRomSegments('catmullRom', CatmullRom);\n\n// export function genCatmullRomSegments(\n// points: IPointLike[],\n// alpha: number,\n// params: IGenSegmentParams = {}\n// ): ISegPath2D | null {\n// const { direction, startPoint } = params;\n// if (points.length < 2 - Number(!!startPoint)) {\n// return null;\n// }\n// if (points.length < 3 - Number(!!startPoint)) {\n// return genLinearSegments(points, params);\n// }\n\n// const segContext = genSegContext('catmullRom', direction, points);\n\n// const gatmullRom = new CatmullRom(segContext, alpha, startPoint);\n\n// genCatmullRomTypeSegments(gatmullRom, points);\n\n// return segContext;\n// }\n"]}
@@ -1,9 +1,12 @@
1
1
  import type { IPointLike } from '@visactor/vutils';
2
- import type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';
2
+ import type { ICurveType, ISegPath2D } from '../../interface';
3
3
  export * from './linear';
4
4
  export * from './linear-closed';
5
5
  export * from './basis';
6
6
  export * from './monotone';
7
7
  export * from './step';
8
8
  export * from './curve/curve-context';
9
- export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: IGenSegmentParams): ISegPath2D | null;
9
+ export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: {
10
+ startPoint?: IPointLike;
11
+ curveTension?: number;
12
+ }): ISegPath2D | null;
@@ -19,9 +19,10 @@ Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.calcLineCache = void 0;
21
21
 
22
- const linear_1 = require("./linear"), basis_1 = require("./basis"), monotone_1 = require("./monotone"), step_1 = require("./step"), linear_closed_1 = require("./linear-closed");
22
+ const linear_1 = require("./linear"), basis_1 = require("./basis"), monotone_1 = require("./monotone"), step_1 = require("./step"), linear_closed_1 = require("./linear-closed"), catmull_rom_1 = require("./catmull-rom"), catmull_rom_close_1 = require("./catmull-rom-close");
23
23
 
24
24
  function calcLineCache(points, curveType, params) {
25
+ var _a, _b;
25
26
  switch (curveType) {
26
27
  case "linear":
27
28
  default:
@@ -45,6 +46,12 @@ function calcLineCache(points, curveType, params) {
45
46
  case "stepAfter":
46
47
  return (0, step_1.genStepSegments)(points, 1, params);
47
48
 
49
+ case "catmullRom":
50
+ return (0, catmull_rom_1.genCatmullRomSegments)(points, null !== (_a = null == params ? void 0 : params.curveTension) && void 0 !== _a ? _a : .5, params);
51
+
52
+ case "catmullRomClosed":
53
+ return (0, catmull_rom_close_1.genCatmullRomClosedSegments)(points, null !== (_b = null == params ? void 0 : params.curveTension) && void 0 !== _b ? _b : .5, params);
54
+
48
55
  case "linearClosed":
49
56
  return (0, linear_closed_1.genLinearClosedSegments)(points, params);
50
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAE1D,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAA0B;IAE1B,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AAzBD,sCAyBC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: IGenSegmentParams\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAC1D,+CAAsD;AACtD,2DAAkE;AAElE,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAA2D;;IAE3D,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,IAAA,mCAAqB,EAAC,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5E,KAAK,kBAAkB;YACrB,OAAO,IAAA,+CAA2B,EAAC,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,GAAG,EAAE,MAAM,CAAC,CAAC;QAClF,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AA7BD,sCA6BC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\nimport { genCatmullRomSegments } from './catmull-rom';\nimport { genCatmullRomClosedSegments } from './catmull-rom-close';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: { startPoint?: IPointLike; curveTension?: number }\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'catmullRom':\n return genCatmullRomSegments(points, params?.curveTension ?? 0.5, params);\n case 'catmullRomClosed':\n return genCatmullRomClosedSegments(points, params?.curveTension ?? 0.5, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}