@visactor/vrender-core 0.21.2-vstory.2 → 0.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +0 -2
  2. package/cjs/animate/Ticker/default-ticker.js +1 -7
  3. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  4. package/cjs/animate/animate.js +1 -1
  5. package/cjs/animate/animate.js.map +1 -1
  6. package/cjs/animate/custom-animate.js +25 -14
  7. package/cjs/animate/custom-animate.js.map +1 -1
  8. package/cjs/animate/easing.d.ts +0 -4
  9. package/cjs/animate/easing.js +1 -24
  10. package/cjs/animate/easing.js.map +1 -1
  11. package/cjs/animate/index.d.ts +0 -1
  12. package/cjs/animate/index.js +1 -1
  13. package/cjs/animate/index.js.map +1 -1
  14. package/cjs/color-string/store.js +2 -1
  15. package/cjs/common/3d-interceptor.js +1 -2
  16. package/cjs/common/bezier-utils.d.ts +0 -3
  17. package/cjs/common/bezier-utils.js +2 -17
  18. package/cjs/common/bezier-utils.js.map +1 -1
  19. package/cjs/common/custom-path2d.d.ts +0 -4
  20. package/cjs/common/custom-path2d.js +11 -43
  21. package/cjs/common/custom-path2d.js.map +1 -1
  22. package/cjs/common/render-area.js +1 -0
  23. package/cjs/common/render-command-list.js +1 -2
  24. package/cjs/common/segment/curve/arc.d.ts +1 -4
  25. package/cjs/common/segment/curve/arc.js +1 -10
  26. package/cjs/common/segment/curve/arc.js.map +1 -1
  27. package/cjs/common/segment/curve/base.d.ts +1 -4
  28. package/cjs/common/segment/curve/base.js.map +1 -1
  29. package/cjs/common/segment/curve/cubic-bezier.d.ts +1 -5
  30. package/cjs/common/segment/curve/cubic-bezier.js +3 -24
  31. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  32. package/cjs/common/segment/curve/curve-context.js +4 -5
  33. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  34. package/cjs/common/segment/curve/ellipse.d.ts +1 -4
  35. package/cjs/common/segment/curve/ellipse.js +0 -9
  36. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  37. package/cjs/common/segment/curve/line.d.ts +1 -4
  38. package/cjs/common/segment/curve/line.js +0 -18
  39. package/cjs/common/segment/curve/line.js.map +1 -1
  40. package/cjs/common/segment/curve/move.d.ts +1 -4
  41. package/cjs/common/segment/curve/move.js +0 -9
  42. package/cjs/common/segment/curve/move.js.map +1 -1
  43. package/cjs/common/segment/curve/path.d.ts +1 -2
  44. package/cjs/common/segment/curve/path.js +2 -5
  45. package/cjs/common/segment/curve/path.js.map +1 -1
  46. package/cjs/common/segment/curve/quadratic-bezier.d.ts +2 -6
  47. package/cjs/common/segment/curve/quadratic-bezier.js +5 -23
  48. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  49. package/cjs/common/shape/rect.d.ts +1 -1
  50. package/cjs/common/shape/rect.js +23 -28
  51. package/cjs/common/shape/rect.js.map +1 -1
  52. package/cjs/common/store.js +1 -1
  53. package/cjs/graphic/builtin-symbol/rect.d.ts +1 -2
  54. package/cjs/graphic/builtin-symbol/rect.js +0 -28
  55. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  56. package/cjs/graphic/builtin-symbol/utils.d.ts +1 -2
  57. package/cjs/graphic/builtin-symbol/utils.js +0 -5
  58. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  59. package/cjs/graphic/config.js +5 -14
  60. package/cjs/graphic/config.js.map +1 -1
  61. package/cjs/graphic/graphic.js +1 -15
  62. package/cjs/graphic/graphic.js.map +1 -1
  63. package/cjs/graphic/richtext/wrapper.d.ts +0 -1
  64. package/cjs/graphic/richtext/wrapper.js +1 -1
  65. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  66. package/cjs/graphic/richtext.js +1 -2
  67. package/cjs/graphic/richtext.js.map +1 -1
  68. package/cjs/index.d.ts +0 -1
  69. package/cjs/index.js +1 -1
  70. package/cjs/index.js.map +1 -1
  71. package/cjs/interface/animate.d.ts +39 -5
  72. package/cjs/interface/animate.js.map +1 -1
  73. package/cjs/interface/graphic/group.d.ts +0 -1
  74. package/cjs/interface/graphic/group.js.map +1 -1
  75. package/cjs/interface/graphic/image.d.ts +0 -1
  76. package/cjs/interface/graphic/image.js.map +1 -1
  77. package/cjs/interface/graphic/path.d.ts +0 -1
  78. package/cjs/interface/graphic/path.js.map +1 -1
  79. package/cjs/interface/graphic/rect.d.ts +0 -1
  80. package/cjs/interface/graphic/rect.js.map +1 -1
  81. package/cjs/interface/graphic/symbol.d.ts +0 -2
  82. package/cjs/interface/graphic/symbol.js.map +1 -1
  83. package/cjs/interface/graphic.d.ts +2 -6
  84. package/cjs/interface/graphic.js.map +1 -1
  85. package/cjs/interface/path.d.ts +0 -5
  86. package/cjs/interface/path.js.map +1 -1
  87. package/cjs/interface/picker.d.ts +0 -13
  88. package/cjs/interface/picker.js.map +1 -1
  89. package/cjs/picker/constants.d.ts +0 -2
  90. package/cjs/picker/constants.js +2 -3
  91. package/cjs/picker/constants.js.map +1 -1
  92. package/cjs/picker/pick-interceptor.d.ts +2 -7
  93. package/cjs/picker/pick-interceptor.js +2 -19
  94. package/cjs/picker/pick-interceptor.js.map +1 -1
  95. package/cjs/picker/pick-modules.js +4 -7
  96. package/cjs/picker/pick-modules.js.map +1 -1
  97. package/cjs/picker/picker-service.d.ts +2 -4
  98. package/cjs/picker/picker-service.js +12 -13
  99. package/cjs/picker/picker-service.js.map +1 -1
  100. package/cjs/plugins/builtin-plugin/edit-module.d.ts +5 -6
  101. package/cjs/plugins/builtin-plugin/edit-module.js +28 -84
  102. package/cjs/plugins/builtin-plugin/edit-module.js.map +1 -1
  103. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +30 -49
  104. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +217 -280
  105. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
  106. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  107. package/cjs/render/contributions/render/base-render.d.ts +0 -1
  108. package/cjs/render/contributions/render/base-render.js +2 -20
  109. package/cjs/render/contributions/render/base-render.js.map +1 -1
  110. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  111. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +2 -29
  112. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  113. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -1
  114. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  115. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +4 -4
  116. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  117. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +1 -8
  118. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +2 -30
  119. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  120. package/cjs/render/contributions/render/contributions/text-contribution-render.js +1 -1
  121. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  122. package/cjs/render/contributions/render/draw-interceptor.js +2 -3
  123. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  124. package/cjs/render/contributions/render/group-render.js +2 -2
  125. package/cjs/render/contributions/render/group-render.js.map +1 -1
  126. package/cjs/render/contributions/render/image-render.js +3 -3
  127. package/cjs/render/contributions/render/image-render.js.map +1 -1
  128. package/cjs/render/contributions/render/path-render.js.map +1 -1
  129. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  130. package/cjs/render/contributions/render/rect-render.js +2 -2
  131. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  132. package/cjs/render/contributions/render/richtext-render.js +1 -1
  133. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  134. package/cjs/render/contributions/render/symbol-render.js +12 -15
  135. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  136. package/cjs/render/contributions/render/utils.d.ts +2 -1
  137. package/cjs/render/contributions/render/utils.js +20 -4
  138. package/cjs/render/contributions/render/utils.js.map +1 -1
  139. package/dist/index.es.js +7663 -8316
  140. package/es/animate/Ticker/default-ticker.d.ts +0 -2
  141. package/es/animate/Ticker/default-ticker.js +1 -7
  142. package/es/animate/Ticker/default-ticker.js.map +1 -1
  143. package/es/animate/animate.js +1 -1
  144. package/es/animate/animate.js.map +1 -1
  145. package/es/animate/custom-animate.js +25 -14
  146. package/es/animate/custom-animate.js.map +1 -1
  147. package/es/animate/easing.d.ts +0 -4
  148. package/es/animate/easing.js +1 -24
  149. package/es/animate/easing.js.map +1 -1
  150. package/es/animate/index.d.ts +0 -1
  151. package/es/animate/index.js +0 -2
  152. package/es/animate/index.js.map +1 -1
  153. package/es/color-string/store.js +2 -1
  154. package/es/common/3d-interceptor.js +1 -2
  155. package/es/common/bezier-utils.d.ts +0 -3
  156. package/es/common/bezier-utils.js +0 -14
  157. package/es/common/bezier-utils.js.map +1 -1
  158. package/es/common/custom-path2d.d.ts +0 -4
  159. package/es/common/custom-path2d.js +12 -44
  160. package/es/common/custom-path2d.js.map +1 -1
  161. package/es/common/render-area.js +2 -1
  162. package/es/common/render-command-list.js +1 -2
  163. package/es/common/segment/curve/arc.d.ts +1 -4
  164. package/es/common/segment/curve/arc.js +1 -10
  165. package/es/common/segment/curve/arc.js.map +1 -1
  166. package/es/common/segment/curve/base.d.ts +1 -4
  167. package/es/common/segment/curve/base.js.map +1 -1
  168. package/es/common/segment/curve/cubic-bezier.d.ts +1 -5
  169. package/es/common/segment/curve/cubic-bezier.js +1 -22
  170. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  171. package/es/common/segment/curve/curve-context.js +3 -6
  172. package/es/common/segment/curve/curve-context.js.map +1 -1
  173. package/es/common/segment/curve/ellipse.d.ts +1 -4
  174. package/es/common/segment/curve/ellipse.js +0 -9
  175. package/es/common/segment/curve/ellipse.js.map +1 -1
  176. package/es/common/segment/curve/line.d.ts +1 -4
  177. package/es/common/segment/curve/line.js +0 -18
  178. package/es/common/segment/curve/line.js.map +1 -1
  179. package/es/common/segment/curve/move.d.ts +1 -4
  180. package/es/common/segment/curve/move.js +0 -9
  181. package/es/common/segment/curve/move.js.map +1 -1
  182. package/es/common/segment/curve/path.d.ts +1 -2
  183. package/es/common/segment/curve/path.js +2 -5
  184. package/es/common/segment/curve/path.js.map +1 -1
  185. package/es/common/segment/curve/quadratic-bezier.d.ts +2 -6
  186. package/es/common/segment/curve/quadratic-bezier.js +5 -28
  187. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  188. package/es/common/shape/rect.d.ts +1 -1
  189. package/es/common/shape/rect.js +23 -28
  190. package/es/common/shape/rect.js.map +1 -1
  191. package/es/common/store.js +1 -1
  192. package/es/graphic/builtin-symbol/rect.d.ts +1 -2
  193. package/es/graphic/builtin-symbol/rect.js +0 -28
  194. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  195. package/es/graphic/builtin-symbol/utils.d.ts +1 -2
  196. package/es/graphic/builtin-symbol/utils.js +0 -5
  197. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  198. package/es/graphic/config.js +5 -14
  199. package/es/graphic/config.js.map +1 -1
  200. package/es/graphic/graphic.js +1 -15
  201. package/es/graphic/graphic.js.map +1 -1
  202. package/es/graphic/richtext/wrapper.d.ts +0 -1
  203. package/es/graphic/richtext/wrapper.js +1 -1
  204. package/es/graphic/richtext/wrapper.js.map +1 -1
  205. package/es/graphic/richtext.js +1 -2
  206. package/es/graphic/richtext.js.map +1 -1
  207. package/es/index.d.ts +0 -1
  208. package/es/index.js +0 -2
  209. package/es/index.js.map +1 -1
  210. package/es/interface/animate.d.ts +39 -5
  211. package/es/interface/animate.js.map +1 -1
  212. package/es/interface/graphic/group.d.ts +0 -1
  213. package/es/interface/graphic/group.js.map +1 -1
  214. package/es/interface/graphic/image.d.ts +0 -1
  215. package/es/interface/graphic/image.js.map +1 -1
  216. package/es/interface/graphic/path.d.ts +0 -1
  217. package/es/interface/graphic/path.js.map +1 -1
  218. package/es/interface/graphic/rect.d.ts +0 -1
  219. package/es/interface/graphic/rect.js.map +1 -1
  220. package/es/interface/graphic/symbol.d.ts +0 -2
  221. package/es/interface/graphic/symbol.js.map +1 -1
  222. package/es/interface/graphic.d.ts +2 -6
  223. package/es/interface/graphic.js.map +1 -1
  224. package/es/interface/path.d.ts +0 -5
  225. package/es/interface/path.js.map +1 -1
  226. package/es/interface/picker.d.ts +0 -13
  227. package/es/interface/picker.js.map +1 -1
  228. package/es/picker/constants.d.ts +0 -2
  229. package/es/picker/constants.js +0 -4
  230. package/es/picker/constants.js.map +1 -1
  231. package/es/picker/pick-interceptor.d.ts +2 -7
  232. package/es/picker/pick-interceptor.js +1 -19
  233. package/es/picker/pick-interceptor.js.map +1 -1
  234. package/es/picker/pick-modules.js +3 -5
  235. package/es/picker/pick-modules.js.map +1 -1
  236. package/es/picker/picker-service.d.ts +2 -4
  237. package/es/picker/picker-service.js +13 -13
  238. package/es/picker/picker-service.js.map +1 -1
  239. package/es/plugins/builtin-plugin/edit-module.d.ts +5 -6
  240. package/es/plugins/builtin-plugin/edit-module.js +25 -79
  241. package/es/plugins/builtin-plugin/edit-module.js.map +1 -1
  242. package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +30 -49
  243. package/es/plugins/builtin-plugin/richtext-edit-plugin.js +214 -283
  244. package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
  245. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  246. package/es/render/contributions/render/base-render.d.ts +0 -1
  247. package/es/render/contributions/render/base-render.js +2 -21
  248. package/es/render/contributions/render/base-render.js.map +1 -1
  249. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  250. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +2 -29
  251. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  252. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -1
  253. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  254. package/es/render/contributions/render/contributions/rect-contribution-render.js +4 -4
  255. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  256. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +1 -8
  257. package/es/render/contributions/render/contributions/symbol-contribution-render.js +0 -26
  258. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  259. package/es/render/contributions/render/contributions/text-contribution-render.js +1 -1
  260. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  261. package/es/render/contributions/render/draw-interceptor.js +2 -3
  262. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  263. package/es/render/contributions/render/group-render.js +2 -2
  264. package/es/render/contributions/render/group-render.js.map +1 -1
  265. package/es/render/contributions/render/image-render.js +3 -3
  266. package/es/render/contributions/render/image-render.js.map +1 -1
  267. package/es/render/contributions/render/path-render.js.map +1 -1
  268. package/es/render/contributions/render/polygon-render.js.map +1 -1
  269. package/es/render/contributions/render/rect-render.js +2 -2
  270. package/es/render/contributions/render/rect-render.js.map +1 -1
  271. package/es/render/contributions/render/richtext-render.js +1 -1
  272. package/es/render/contributions/render/richtext-render.js.map +1 -1
  273. package/es/render/contributions/render/symbol-render.js +13 -16
  274. package/es/render/contributions/render/symbol-render.js.map +1 -1
  275. package/es/render/contributions/render/utils.d.ts +2 -1
  276. package/es/render/contributions/render/utils.js +18 -0
  277. package/es/render/contributions/render/utils.js.map +1 -1
  278. package/package.json +1 -1
  279. package/cjs/animate/easing-func.d.ts +0 -1
  280. package/cjs/animate/easing-func.js +0 -16
  281. package/cjs/animate/easing-func.js.map +0 -1
  282. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +0 -1
  283. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js +0 -3
  284. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +0 -1
  285. package/es/animate/easing-func.d.ts +0 -1
  286. package/es/animate/easing-func.js +0 -10
  287. package/es/animate/easing-func.js.map +0 -1
  288. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +0 -1
  289. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js +0 -3
  290. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/bezier-utils.ts"],"names":[],"mappings":"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","file":"bezier-utils.js","sourcesContent":["import type { IPointLike, IPoint } from '@visactor/vutils';\nimport { PointService, Point } from '@visactor/vutils';\nexport function snapLength(xArr: number[], yArr: number[]) {\n let totalLength = 0;\n const count = xArr.length;\n for (let i = 0; i < count; i++) {\n const x = xArr[i];\n const y = yArr[i];\n const nextX = xArr[(i + 1) % count];\n const nextY = yArr[(i + 1) % count];\n totalLength += PointService.distanceNN(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n\n/**\n * 计算贝塞尔曲线的长度\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param iterationCount\n */\nexport function cubicLength(p0: IPointLike, p1: IPointLike, p2: IPointLike, p3: IPointLike, iterationCount: number) {\n return snapLength([p0.x, p1.x, p2.x, p3.x], [p0.y, p1.y, p2.y, p3.y]);\n}\n\nexport function cubicCalc(p0: number, p1: number, p2: number, p3: number, t: number): number {\n const one = 1 - t;\n return one * one * one * p0 + 3 * p1 * t * one * one + 3 * p2 * t * t * one + p3 * t * t * t;\n}\n\n/**\n * 根据t计算三次贝塞尔的点\n * example:\n * x: cubicAt(x1, x2, x3, x4, t),\n * y: cubicAt(y1, y2, y3, y4, t),\n * @param p0 起点坐标\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点坐标\n * @param t\n */\nexport function cubicPointAt(p0: IPointLike, p1: IPointLike, p2: IPointLike, p3: IPointLike, t: number): IPoint {\n const x = cubicCalc(p0.x, p1.x, p2.x, p3.x, t);\n const y = cubicCalc(p0.y, p1.y, p2.y, p3.y, t);\n return new Point(x, y);\n}\n\nexport function quadCalc(p0: number, p1: number, p2: number, t: number): number {\n const one = 1 - t;\n return one * one * p0 + 2 * one * t * p1 + t * t * p2;\n}\n\n/**\n * 根据t计算三次贝塞尔的点\n * example:\n * x: cubicAt(x1, x2, x3, x4, t),\n * y: cubicAt(y1, y2, y3, y4, t),\n * @param p0 起点坐标\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点坐标\n * @param t\n */\nexport function quadPointAt(p0: IPointLike, p1: IPointLike, p2: IPointLike, t: number): IPoint {\n const x = quadCalc(p0.x, p1.x, p2.x, t);\n const y = quadCalc(p0.y, p1.y, p2.y, t);\n return new Point(x, y);\n}\n\n/**\n * 计算贝塞尔曲线的长度\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param iterationCount\n */\nexport function quadLength(p0: IPointLike, p1: IPointLike, p2: IPointLike, iterationCount: number) {\n return snapLength([p0.x, p1.x, p2.x], [p0.y, p1.y, p2.y]);\n}\n"]}
1
+ {"version":3,"sources":["../src/common/bezier-utils.ts"],"names":[],"mappings":";;;AACA,6CAAuD;AACvD,SAAgB,UAAU,CAAC,IAAc,EAAE,IAAc;IACvD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,WAAW,IAAI,qBAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC5D;IACD,OAAO,WAAW,GAAG,CAAC,CAAC;AACzB,CAAC;AAXD,gCAWC;AAUD,SAAgB,WAAW,CAAC,EAAc,EAAE,EAAc,EAAE,EAAc,EAAE,EAAc,EAAE,cAAsB;IAChH,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAFD,kCAEC;AAED,SAAgB,SAAS,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,CAAS;IACjF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC;AAHD,8BAGC;AAaD,SAAgB,YAAY,CAAC,EAAc,EAAE,EAAc,EAAE,EAAc,EAAE,EAAc,EAAE,CAAS;IACpG,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,cAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAJD,oCAIC","file":"bezier-utils.js","sourcesContent":["import type { IPointLike, IPoint } from '@visactor/vutils';\nimport { PointService, Point } from '@visactor/vutils';\nexport function snapLength(xArr: number[], yArr: number[]) {\n let totalLength = 0;\n const count = xArr.length;\n for (let i = 0; i < count; i++) {\n const x = xArr[i];\n const y = yArr[i];\n const nextX = xArr[(i + 1) % count];\n const nextY = yArr[(i + 1) % count];\n totalLength += PointService.distanceNN(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n\n/**\n * 计算贝塞尔曲线的长度\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param iterationCount\n */\nexport function cubicLength(p0: IPointLike, p1: IPointLike, p2: IPointLike, p3: IPointLike, iterationCount: number) {\n return snapLength([p0.x, p1.x, p2.x, p3.x], [p0.y, p1.y, p2.y, p3.y]);\n}\n\nexport function cubicCalc(p0: number, p1: number, p2: number, p3: number, t: number): number {\n const one = 1 - t;\n return one * one * one * p0 + 3 * p1 * t * one * one + 3 * p2 * t * t * one + p3 * t * t * t;\n}\n\n/**\n * 根据t计算三次贝塞尔的点\n * example:\n * x: cubicAt(x1, x2, x3, x4, t),\n * y: cubicAt(y1, y2, y3, y4, t),\n * @param p0 起点坐标\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点坐标\n * @param t\n */\nexport function cubicPointAt(p0: IPointLike, p1: IPointLike, p2: IPointLike, p3: IPointLike, t: number): IPoint {\n const x = cubicCalc(p0.x, p1.x, p2.x, p3.x, t);\n const y = cubicCalc(p0.y, p1.y, p2.y, p3.y, t);\n return new Point(x, y);\n}\n"]}
@@ -9,7 +9,6 @@ export declare class CustomPath2D extends CurvePath implements ICustomPath2D {
9
9
  protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];
10
10
  protected toStringCbList?: ((cmd: CommandType) => string)[];
11
11
  constructor(ctx?: IPath2D);
12
- get curves(): ICurve<IPoint>[];
13
12
  setCtx(ctx?: IPath2D): void;
14
13
  moveTo(x: number, y: number): this;
15
14
  lineTo(x: number, y: number): this;
@@ -23,7 +22,6 @@ export declare class CustomPath2D extends CurvePath implements ICustomPath2D {
23
22
  addCurve(curve: ICurve<IPoint>): void;
24
23
  clear(): void;
25
24
  beginPath(): void;
26
- tryBuildCurves(): ICurve<IPoint>[];
27
25
  toString(): string;
28
26
  fromString(str: string, x?: number, y?: number, sX?: number, sY?: number): this;
29
27
  fromLine(line: ILine): void;
@@ -43,10 +41,8 @@ export declare class CustomPath2D extends CurvePath implements ICustomPath2D {
43
41
  private _updateBounds;
44
42
  release(): void;
45
43
  getLength(): number;
46
- getYAt(x: number): number;
47
44
  getAttrAt(distance: number): {
48
45
  pos: IPointLike;
49
46
  angle: number;
50
47
  };
51
- drawWithClipRange(ctx: IPath2D, size: number, x: number, y: number, clipRange: number): void;
52
48
  }
@@ -10,9 +10,6 @@ class CustomPath2D extends path_1.CurvePath {
10
10
  constructor(ctx) {
11
11
  super(), this.commandList = [], ctx && (this._ctx = ctx), this._boundsContext = new bounds_context_1.BoundsContext(this.bounds);
12
12
  }
13
- get curves() {
14
- return this.tryBuildCurves();
15
- }
16
13
  setCtx(ctx) {
17
14
  this._ctx = ctx;
18
15
  }
@@ -55,21 +52,14 @@ class CustomPath2D extends path_1.CurvePath {
55
52
  this;
56
53
  }
57
54
  addCurve(curve) {
58
- this._curves.push(curve);
55
+ this.curves.push(curve);
59
56
  }
60
57
  clear() {
61
- this.transformCbList = null, this.commandList.length = 0, this._curves.length = 0;
58
+ this.transformCbList = null, this.commandList.length = 0, this.curves.length = 0;
62
59
  }
63
60
  beginPath() {
64
61
  this.clear();
65
62
  }
66
- tryBuildCurves() {
67
- if (!this._curves || !this._curves.length) {
68
- const curveContext = new segment_1.CurveContext(this);
69
- (0, render_command_list_1.renderCommandList)(this.commandList, curveContext, 0, 0, 1, 1);
70
- }
71
- return this._curves;
72
- }
73
63
  toString() {
74
64
  if (!this.toStringCbList) {
75
65
  const list = [];
@@ -102,7 +92,7 @@ class CustomPath2D extends path_1.CurvePath {
102
92
  if (!points) return;
103
93
  const cache = (0, segment_1.calcLineCache)(points, curveType);
104
94
  "x" === clipRangeByDimension ? this.direction = enums_1.Direction.ROW : "y" === clipRangeByDimension ? this.direction = enums_1.Direction.COLUMN : "auto" === clipRangeByDimension && (this.direction = cache.direction),
105
- this._curves = cache.curves;
95
+ this.curves = cache.curves;
106
96
  }
107
97
  fromCustomPath2D(path, x, y, sX, sY) {
108
98
  return this.clear(), this._runCommandList(path.commandList, x, y, sX, sY), this._updateBounds(),
@@ -299,27 +289,19 @@ class CustomPath2D extends path_1.CurvePath {
299
289
  }
300
290
  getLength() {
301
291
  if (this.direction === enums_1.Direction.COLUMN) {
302
- if (!this._curves.length) return 0;
303
- const sc = this._curves[0], ec = this._curves[this._curves.length - 1];
292
+ if (!this.curves.length) return 0;
293
+ const sc = this.curves[0], ec = this.curves[this.curves.length - 1];
304
294
  return (0, vutils_1.abs)(sc.p0.y - ec.p1.y);
305
295
  }
306
296
  if (this.direction === enums_1.Direction.ROW) {
307
- if (!this._curves.length) return 0;
308
- const sc = this._curves[0], ec = this._curves[this._curves.length - 1];
297
+ if (!this.curves.length) return 0;
298
+ const sc = this.curves[0], ec = this.curves[this.curves.length - 1];
309
299
  return (0, vutils_1.abs)(sc.p0.x - ec.p1.x);
310
300
  }
311
- return this._curves.reduce(((l, c) => l + c.getLength()), 0);
312
- }
313
- getYAt(x) {
314
- if (!this.curves) return 1 / 0;
315
- for (let i = 0; i < this.curves.length; i++) {
316
- const curve = this.curves[i];
317
- if (curve.includeX(x)) return curve.getYAt(x);
318
- }
319
- return 1 / 0;
301
+ return this.curves.reduce(((l, c) => l + c.getLength()), 0);
320
302
  }
321
303
  getAttrAt(distance) {
322
- if (!this._curves) return {
304
+ if (!this.curves) return {
323
305
  pos: {
324
306
  x: 0,
325
307
  y: 0
@@ -327,8 +309,8 @@ class CustomPath2D extends path_1.CurvePath {
327
309
  angle: 0
328
310
  };
329
311
  let curve, _dis = 0;
330
- for (let i = 0; i < this._curves.length; i++) {
331
- curve = this._curves[i];
312
+ for (let i = 0; i < this.curves.length; i++) {
313
+ curve = this.curves[i];
332
314
  const cl = curve.getLength(this.direction);
333
315
  if (_dis + cl >= distance) break;
334
316
  _dis += cl;
@@ -339,20 +321,6 @@ class CustomPath2D extends path_1.CurvePath {
339
321
  angle: curve.getAngleAt(t)
340
322
  };
341
323
  }
342
- drawWithClipRange(ctx, size, x, y, clipRange) {
343
- this.tryBuildCurves();
344
- const totalLen = this.getLength() * clipRange;
345
- let currLen = 0;
346
- for (let i = 0; i < this._curves.length; i++) {
347
- const curve = this._curves[i], cl = curve.getLength(this.direction);
348
- if (!(currLen + cl <= totalLen)) {
349
- const percent = 1 - (currLen + cl - totalLen) / cl;
350
- curve.draw(ctx, x, y, size, size, percent);
351
- break;
352
- }
353
- curve.draw(ctx, x, y, size, size, 1), currLen += cl;
354
- }
355
- }
356
324
  }
357
325
 
358
326
  exports.CustomPath2D = CustomPath2D;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache, CurveContext } from './segment';\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// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n get curves(): ICurve<IPoint>[] {\n return this.tryBuildCurves();\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this._curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this._curves.length = 0;\n }\n\n beginPath() {\n this.clear();\n }\n\n // 默认不创建curves,获取curves的时候动态生成\n tryBuildCurves() {\n if (!(this._curves && this._curves.length)) {\n const curveContext = new CurveContext(this);\n renderCommandList(this.commandList, curveContext, 0, 0, 1, 1);\n }\n return this._curves;\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this._curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this._curves.length) {\n return 0;\n }\n const sc = this._curves[0];\n const ec = this._curves[this._curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this._curves.length) {\n return 0;\n }\n const sc = this._curves[0];\n const ec = this._curves[this._curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this._curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getYAt(x: number): number {\n if (!this.curves) {\n return Infinity;\n }\n for (let i = 0; i < this.curves.length; i++) {\n const curve = this.curves[i];\n if (curve.includeX(x)) {\n return curve.getYAt(x);\n }\n }\n return Infinity;\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this._curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this._curves.length; i++) {\n curve = this._curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n\n drawWithClipRange(ctx: IPath2D, size: number, x: number, y: number, clipRange: number) {\n this.tryBuildCurves();\n const totalLen = this.getLength() * clipRange;\n let currLen = 0;\n for (let i = 0; i < this._curves.length; i++) {\n const curve = this._curves[i];\n const cl = curve.getLength(this.direction);\n if (currLen + cl <= totalLen) {\n curve.draw(ctx, x, y, size, size, 1);\n } else {\n const percent = 1 - (currLen + cl - totalLen) / cl;\n curve.draw(ctx, x, y, size, size, percent);\n break;\n }\n currLen += cl;\n }\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache } from './segment';\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// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this.curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this.curves.length = 0;\n }\n\n beginPath() {\n this.clear();\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this.curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this.curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this.curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this.curves.length; i++) {\n curve = this.curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
@@ -121,4 +121,5 @@ function drawAreaBlock(path, topList, bottomList, params) {
121
121
  path.closePath();
122
122
  }
123
123
 
124
+ //# sourceMappingURL=render-area.js.map
124
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;
@@ -1,4 +1,4 @@
1
- import type { IDirection, IArcCurve, IPath2D } from '../../../interface';
1
+ import type { IDirection, IArcCurve } from '../../../interface';
2
2
  import { Curve } from './base';
3
3
  import type { IPoint, IPointLike } from '@visactor/vutils';
4
4
  export declare class ArcCurve extends Curve implements IArcCurve {
@@ -11,7 +11,4 @@ export declare class ArcCurve extends Curve implements IArcCurve {
11
11
  protected calcLength(): number;
12
12
  protected calcProjLength(direction: IDirection): number;
13
13
  getAngleAt(t: number): number;
14
- draw(path: IPath2D, percent: number): void;
15
- getYAt(x: number): number;
16
- includeX(x: number): boolean;
17
14
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ArcCurve = void 0;
6
6
 
7
- const enums_1 = require("../../enums"), base_1 = require("./base");
7
+ const enums_1 = require("src/common/enums"), base_1 = require("./base");
8
8
 
9
9
  class ArcCurve extends base_1.Curve {
10
10
  constructor(p0, p1, radius) {
@@ -23,15 +23,6 @@ class ArcCurve extends base_1.Curve {
23
23
  getAngleAt(t) {
24
24
  throw new Error("ArcCurve暂不支持getAngleAt");
25
25
  }
26
- draw(path, percent) {
27
- throw new Error("暂不支持");
28
- }
29
- getYAt(x) {
30
- throw new Error("ArcCurve暂不支持getYAt");
31
- }
32
- includeX(x) {
33
- throw new Error("ArcCurve暂不支持includeX");
34
- }
35
26
  }
36
27
 
37
28
  exports.ArcCurve = ArcCurve;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/arc.ts"],"names":[],"mappings":";;;AACA,uCAA4C;AAC5C,iCAA+B;AAG/B,MAAa,QAAS,SAAQ,YAAK;IAKjC,YAAY,EAAU,EAAE,EAAU,EAAE,MAAc;QAChD,KAAK,EAAE,CAAC;QALV,SAAI,GAAW,qBAAa,CAAC,QAAQ,CAAC;QAMpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,IAAa,EAAE,OAAe;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,CAAS;QACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ,CAAC,CAAS;QAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;CACF;AAjCD,4BAiCC","file":"arc.js","sourcesContent":["import type { IDirection, IArcCurve, IPath2D } from '../../../interface';\nimport { CurveTypeEnum } from '../../enums';\nimport { Curve } from './base';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\n\nexport class ArcCurve extends Curve implements IArcCurve {\n type: number = CurveTypeEnum.ArcCurve;\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare radius: number;\n constructor(p0: IPoint, p1: IPoint, radius: number) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.radius = radius;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('ArcCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('ArcCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n\n draw(path: IPath2D, percent: number) {\n throw new Error('暂不支持');\n }\n getYAt(x: number): number {\n throw new Error('ArcCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('ArcCurve暂不支持includeX');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/arc.ts"],"names":[],"mappings":";;;AAAA,4CAAiD;AAEjD,iCAA+B;AAG/B,MAAa,QAAS,SAAQ,YAAK;IAKjC,YAAY,EAAU,EAAE,EAAU,EAAE,MAAc;QAChD,KAAK,EAAE,CAAC;QALV,SAAI,GAAW,qBAAa,CAAC,QAAQ,CAAC;QAMpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CACF;AAvBD,4BAuBC","file":"arc.js","sourcesContent":["import { CurveTypeEnum } from 'src/common/enums';\nimport type { IDirection, IArcCurve } from '../../../interface';\nimport { Curve } from './base';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\n\nexport class ArcCurve extends Curve implements IArcCurve {\n type: number = CurveTypeEnum.ArcCurve;\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare radius: number;\n constructor(p0: IPoint, p1: IPoint, radius: number) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.radius = radius;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('ArcCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('ArcCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { IPoint, IPointLike } from '@visactor/vutils';
2
- import type { IDirection, ICurve, IPath2D } from '../../../interface';
2
+ import type { IDirection, ICurve } from '../../../interface';
3
3
  export declare abstract class Curve implements ICurve<IPoint> {
4
4
  type: number;
5
5
  readonly p0: IPoint;
@@ -7,10 +7,7 @@ export declare abstract class Curve implements ICurve<IPoint> {
7
7
  protected length: number;
8
8
  abstract getPointAt(t: number): IPointLike;
9
9
  abstract getAngleAt(t: number): number;
10
- abstract getYAt(x: number): number;
11
- abstract includeX(x: number): boolean;
12
10
  getLength(direction?: IDirection): number;
13
11
  protected abstract calcLength(): number;
14
12
  protected abstract calcProjLength(direction: IDirection): number;
15
- abstract draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
16
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/base.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAUzB,SAAS,CAAC,SAAsB;QAC9B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACvC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CAIF;AAvBD,sBAuBC","file":"base.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IDirection, ICurve, IPath2D } from '../../../interface';\n\nexport abstract class Curve implements ICurve<IPoint> {\n type: number;\n readonly p0: IPoint;\n defined: boolean;\n\n protected length: number;\n abstract getPointAt(t: number): IPointLike;\n abstract getAngleAt(t: number): number;\n abstract getYAt(x: number): number;\n abstract includeX(x: number): boolean;\n getLength(direction?: IDirection): number {\n if (direction != null) {\n return this.calcProjLength(direction);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.calcLength();\n return this.length;\n }\n protected abstract calcLength(): number;\n protected abstract calcProjLength(direction: IDirection): number;\n abstract draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/base.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAQzB,SAAS,CAAC,SAAsB;QAC9B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACvC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CAGF;AApBD,sBAoBC","file":"base.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IDirection, ICurve } from '../../../interface';\n\nexport abstract class Curve implements ICurve<IPoint> {\n type: number;\n readonly p0: IPoint;\n defined: boolean;\n\n protected length: number;\n abstract getPointAt(t: number): IPointLike;\n abstract getAngleAt(t: number): number;\n getLength(direction?: IDirection): number {\n if (direction != null) {\n return this.calcProjLength(direction);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.calcLength();\n return this.length;\n }\n protected abstract calcLength(): number;\n protected abstract calcProjLength(direction: IDirection): number;\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import type { IPoint, IPointLike } from '@visactor/vutils';
2
- import type { ICubicBezierCurve, IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';
2
+ import type { ICubicBezierCurve, IDirection } from '../../../interface';
3
3
  import { Curve } from './base';
4
4
  export declare function divideCubic(curve: ICubicBezierCurve, t: number): ICubicBezierCurve[];
5
- export declare function divideQuad(curve: IQuadraticBezierCurve, t: number): IQuadraticBezierCurve[];
6
5
  export declare class CubicBezierCurve extends Curve implements ICubicBezierCurve {
7
6
  type: number;
8
7
  originP1?: IPointLike;
@@ -17,7 +16,4 @@ export declare class CubicBezierCurve extends Curve implements ICubicBezierCurve
17
16
  protected calcLength(): number;
18
17
  protected calcProjLength(direction: IDirection): number;
19
18
  getAngleAt(t: number): number;
20
- draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
21
- includeX(x: number): boolean;
22
- getYAt(x: number): number;
23
19
  }
@@ -2,21 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.CubicBezierCurve = exports.divideQuad = exports.divideCubic = void 0;
5
+ }), exports.CubicBezierCurve = exports.divideCubic = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), base_1 = require("./base"), enums_1 = require("../../enums"), bezier_utils_1 = require("../../bezier-utils"), quadratic_bezier_1 = require("./quadratic-bezier");
7
+ const vutils_1 = require("@visactor/vutils"), base_1 = require("./base"), enums_1 = require("../../enums"), bezier_utils_1 = require("../../bezier-utils");
8
8
 
9
9
  function divideCubic(curve, t) {
10
10
  const {p0: p0, p1: p1, p2: p2, p3: p3} = curve, pt = (0, bezier_utils_1.cubicPointAt)(p0, p1, p2, p3, t), c1 = vutils_1.PointService.pointAtPP(p0, p1, t), c2 = vutils_1.PointService.pointAtPP(p1, p2, t), c3 = vutils_1.PointService.pointAtPP(p2, p3, t), c12 = vutils_1.PointService.pointAtPP(c1, c2, t), c23 = vutils_1.PointService.pointAtPP(c2, c3, t);
11
11
  return [ new CubicBezierCurve(p0, c1, c12, pt), new CubicBezierCurve(pt, c23, c3, p3) ];
12
12
  }
13
13
 
14
- function divideQuad(curve, t) {
15
- const {p0: p0, p1: p1, p2: p2} = curve, pt = (0, bezier_utils_1.quadPointAt)(p0, p1, p2, t), c1 = vutils_1.PointService.pointAtPP(p0, p1, t), c2 = vutils_1.PointService.pointAtPP(p1, p2, t);
16
- return [ new quadratic_bezier_1.QuadraticBezierCurve(p0, c1, pt), new quadratic_bezier_1.QuadraticBezierCurve(pt, c2, p2) ];
17
- }
18
-
19
- exports.divideCubic = divideCubic, exports.divideQuad = divideQuad;
14
+ exports.divideCubic = divideCubic;
20
15
 
21
16
  class CubicBezierCurve extends base_1.Curve {
22
17
  constructor(p0, p1, p2, p3) {
@@ -41,22 +36,6 @@ class CubicBezierCurve extends base_1.Curve {
41
36
  const minT = (0, vutils_1.max)(t - .01, 0), maxT = (0, vutils_1.min)(t + .01, 1), minP = this.getPointAt(minT), maxP = this.getPointAt(maxT);
42
37
  return (0, vutils_1.atan2)(maxP.y - minP.y, maxP.x - minP.x);
43
38
  }
44
- draw(path, x, y, sx, sy, percent) {
45
- if (path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y), percent >= 1) path.bezierCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y, this.p3.x * sx + x, this.p3.y * sy + y); else if (percent > 0) {
46
- const [curve1] = divideCubic(this, percent);
47
- path.bezierCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y, curve1.p3.x * sx + x, curve1.p3.y * sy + y);
48
- }
49
- }
50
- includeX(x) {
51
- const minX = (0, vutils_1.min)(this.p0.x, this.p1.x, this.p2.x, this.p3.x), maxX = (0,
52
- vutils_1.max)(this.p0.x, this.p1.x, this.p2.x, this.p3.x);
53
- return x >= minX && x <= maxX;
54
- }
55
- getYAt(x) {
56
- const minX = (0, vutils_1.min)(this.p0.x, this.p1.x, this.p2.x, this.p3.x), t = (x - minX) / ((0,
57
- vutils_1.max)(this.p0.x, this.p1.x, this.p2.x, this.p3.x) - minX);
58
- return this.getPointAt(t).y;
59
- }
60
39
  }
61
40
 
62
41
  exports.CubicBezierCurve = CubicBezierCurve;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/cubic-bezier.ts"],"names":[],"mappings":"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","file":"cubic-bezier.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, max, min, PointService } from '@visactor/vutils';\nimport type { ICubicBezierCurve, IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\nimport { cubicLength, cubicPointAt, quadPointAt } from '../../bezier-utils';\nimport { QuadraticBezierCurve } from './quadratic-bezier';\n\n/**\n * 对三次贝塞尔曲线进行分割\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param t\n */\nexport function divideCubic(curve: ICubicBezierCurve, t: number): ICubicBezierCurve[] {\n const { p0, p1, p2, p3 } = curve;\n\n // 划分点\n const pt = cubicPointAt(p0, p1, p2, p3, t);\n // const xt = pt.x;\n // const yt = pt.y;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n const c2 = PointService.pointAtPP(p1, p2, t);\n const c3 = PointService.pointAtPP(p2, p3, t);\n const c12 = PointService.pointAtPP(c1, c2, t);\n const c23 = PointService.pointAtPP(c2, c3, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new CubicBezierCurve(p0, c1, c12, pt);\n const curve2 = new CubicBezierCurve(pt, c23, c3, p3);\n\n return [curve1, curve2];\n}\n/**\n * 对三次贝塞尔曲线进行分割\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param t\n */\nexport function divideQuad(curve: IQuadraticBezierCurve, t: number): IQuadraticBezierCurve[] {\n const { p0, p1, p2 } = curve;\n\n // 划分点\n const pt = quadPointAt(p0, p1, p2, t);\n // const xt = pt.x;\n // const yt = pt.y;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n const c2 = PointService.pointAtPP(p1, p2, t);\n // const c3 = PointService.pointAtPP(p2, p3, t);\n // const c12 = PointService.pointAtPP(c1, c2, t);\n // const c23 = PointService.pointAtPP(c2, c3, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new QuadraticBezierCurve(p0, c1, pt);\n const curve2 = new QuadraticBezierCurve(pt, c2, p2);\n\n return [curve1, curve2];\n}\n\nexport class CubicBezierCurve extends Curve implements ICubicBezierCurve {\n type: number = CurveTypeEnum.CubicBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n declare readonly p3: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n this.p3 = p3;\n }\n\n protected _validPoint(): boolean {\n return Number.isFinite(\n this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y + this.p3.x + this.p3.y\n );\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return cubicPointAt(this.p0, this.p1, this.p2, this.p3, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n protected calcLength(): number {\n // throw new Error('CubicBezierCurve暂不支持updateLength');\n if (this._validPoint()) {\n return cubicLength(this.p0, this.p1, this.p2, this.p3, 0);\n }\n // return distance(this.p0.x || 0, this.p0.y || 0, this.p3.x || 0, this.p3.y || 0);\n // 默认长度不好给\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p3.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p3.y);\n }\n return 0;\n }\n getAngleAt(t: number): number {\n const minT = max(t - 0.01, 0);\n const maxT = min(t + 0.01, 1);\n const minP = this.getPointAt(minT);\n const maxP = this.getPointAt(maxT);\n return atan2(maxP.y - minP.y, maxP.x - minP.x);\n }\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y);\n if (percent >= 1) {\n path.bezierCurveTo(\n this.p1.x * sx + x,\n this.p1.y * sy + y,\n this.p2.x * sx + x,\n this.p2.y * sy + y,\n this.p3.x * sx + x,\n this.p3.y * sy + y\n );\n } else if (percent > 0) {\n const [curve1] = divideCubic(this, percent);\n path.bezierCurveTo(\n curve1.p1.x * sx + x,\n curve1.p1.y * sy + y,\n curve1.p2.x * sx + x,\n curve1.p2.y * sy + y,\n curve1.p3.x * sx + x,\n curve1.p3.y * sy + y\n );\n }\n }\n\n includeX(x: number): boolean {\n const minX = min(this.p0.x, this.p1.x, this.p2.x, this.p3.x);\n const maxX = max(this.p0.x, this.p1.x, this.p2.x, this.p3.x);\n return x >= minX && x <= maxX;\n }\n\n getYAt(x: number): number {\n const minX = min(this.p0.x, this.p1.x, this.p2.x, this.p3.x);\n const maxX = max(this.p0.x, this.p1.x, this.p2.x, this.p3.x);\n const t = (x - minX) / (maxX - minX);\n return this.getPointAt(t).y;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/cubic-bezier.ts"],"names":[],"mappings":"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","file":"cubic-bezier.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, max, min, PointService } from '@visactor/vutils';\nimport type { ICubicBezierCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\nimport { cubicLength, cubicPointAt } from '../../bezier-utils';\n\n/**\n * 对三次贝塞尔曲线进行分割\n * @param p0 起点\n * @param p1 控制点1\n * @param p2 控制点2\n * @param p3 终点\n * @param t\n */\nexport function divideCubic(curve: ICubicBezierCurve, t: number): ICubicBezierCurve[] {\n const { p0, p1, p2, p3 } = curve;\n\n // 划分点\n const pt = cubicPointAt(p0, p1, p2, p3, t);\n // const xt = pt.x;\n // const yt = pt.y;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n const c2 = PointService.pointAtPP(p1, p2, t);\n const c3 = PointService.pointAtPP(p2, p3, t);\n const c12 = PointService.pointAtPP(c1, c2, t);\n const c23 = PointService.pointAtPP(c2, c3, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new CubicBezierCurve(p0, c1, c12, pt);\n const curve2 = new CubicBezierCurve(pt, c23, c3, p3);\n\n return [curve1, curve2];\n}\n\nexport class CubicBezierCurve extends Curve implements ICubicBezierCurve {\n type: number = CurveTypeEnum.CubicBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n declare readonly p3: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n this.p3 = p3;\n }\n\n protected _validPoint(): boolean {\n return Number.isFinite(\n this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y + this.p3.x + this.p3.y\n );\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return cubicPointAt(this.p0, this.p1, this.p2, this.p3, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n protected calcLength(): number {\n // throw new Error('CubicBezierCurve暂不支持updateLength');\n if (this._validPoint()) {\n return cubicLength(this.p0, this.p1, this.p2, this.p3, 0);\n }\n // return distance(this.p0.x || 0, this.p0.y || 0, this.p3.x || 0, this.p3.y || 0);\n // 默认长度不好给\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p3.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p3.y);\n }\n return 0;\n }\n getAngleAt(t: number): number {\n const minT = max(t - 0.01, 0);\n const maxT = min(t + 0.01, 1);\n const minP = this.getPointAt(minT);\n const maxP = this.getPointAt(maxT);\n return atan2(maxP.y - minP.y, maxP.x - minP.x);\n }\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.CurveContext = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), line_1 = require("./line"), cubic_bezier_1 = require("./cubic-bezier"), quadratic_bezier_1 = require("./quadratic-bezier");
7
+ const vutils_1 = require("@visactor/vutils"), line_1 = require("./line"), cubic_bezier_1 = require("./cubic-bezier");
8
8
 
9
9
  class CurveContext {
10
10
  constructor(path) {
@@ -15,18 +15,17 @@ class CurveContext {
15
15
  }
16
16
  lineTo(x, y) {
17
17
  const curve = this.addLinearCurve(x, y);
18
- this.path.addCurve(curve), this._lastX = x, this._lastY = y;
18
+ this.path.curves.push(curve), this._lastX = x, this._lastY = y;
19
19
  }
20
20
  addLinearCurve(x, y) {
21
21
  return new line_1.LineCurve(new vutils_1.Point(this._lastX, this._lastY), new vutils_1.Point(x, y));
22
22
  }
23
23
  quadraticCurveTo(aCPx, aCPy, aX, aY) {
24
- const curve = new quadratic_bezier_1.QuadraticBezierCurve(new vutils_1.Point(this._lastX, this._lastY), new vutils_1.Point(aCPx, aCPy), new vutils_1.Point(aX, aY));
25
- this.path.addCurve(curve), this._lastX = aX, this._lastY = aY;
24
+ throw new Error("CurveContext不支持调用quadraticCurveTo");
26
25
  }
27
26
  bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
28
27
  const curve = new cubic_bezier_1.CubicBezierCurve(new vutils_1.Point(this._lastX, this._lastY), new vutils_1.Point(cp1x, cp1y), new vutils_1.Point(cp2x, cp2y), new vutils_1.Point(x, y));
29
- this.path.addCurve(curve), this._lastX = x, this._lastY = y;
28
+ this.path.curves.push(curve), this._lastX = x, this._lastY = y;
30
29
  }
31
30
  arcTo(aX1, aY1, aX2, aY2, aRadius) {
32
31
  throw new Error("CurveContext不支持调用arcTo");