@visactor/vrender-core 0.21.0-alpha.3 → 0.21.0-vstory.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +4 -1
  2. package/cjs/animate/Ticker/default-ticker.js +9 -3
  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/easing-func.d.ts +1 -0
  7. package/cjs/animate/easing-func.js +16 -0
  8. package/cjs/animate/easing-func.js.map +1 -0
  9. package/cjs/animate/easing.d.ts +3 -0
  10. package/cjs/animate/easing.js +9 -1
  11. package/cjs/animate/easing.js.map +1 -1
  12. package/cjs/color-string/store.js +1 -2
  13. package/cjs/common/bezier-utils.d.ts +3 -0
  14. package/cjs/common/bezier-utils.js +17 -2
  15. package/cjs/common/bezier-utils.js.map +1 -1
  16. package/cjs/common/bounds-context.js +2 -1
  17. package/cjs/common/custom-path2d.d.ts +4 -0
  18. package/cjs/common/custom-path2d.js +43 -11
  19. package/cjs/common/custom-path2d.js.map +1 -1
  20. package/cjs/common/morphing-utils.js +1 -1
  21. package/cjs/common/path-svg.js +1 -1
  22. package/cjs/common/polygon.js +2 -2
  23. package/cjs/common/rect-utils.js +1 -1
  24. package/cjs/common/render-area.js +1 -2
  25. package/cjs/common/render-command-list.js +1 -1
  26. package/cjs/common/render-curve.js +1 -1
  27. package/cjs/common/render-utils.js +1 -1
  28. package/cjs/common/seg-context.js +1 -1
  29. package/cjs/common/segment/curve/arc.d.ts +4 -1
  30. package/cjs/common/segment/curve/arc.js +10 -1
  31. package/cjs/common/segment/curve/arc.js.map +1 -1
  32. package/cjs/common/segment/curve/base.d.ts +4 -1
  33. package/cjs/common/segment/curve/base.js.map +1 -1
  34. package/cjs/common/segment/curve/cubic-bezier.d.ts +5 -1
  35. package/cjs/common/segment/curve/cubic-bezier.js +24 -3
  36. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  37. package/cjs/common/segment/curve/curve-context.js +5 -4
  38. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  39. package/cjs/common/segment/curve/ellipse.d.ts +4 -1
  40. package/cjs/common/segment/curve/ellipse.js +9 -0
  41. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  42. package/cjs/common/segment/curve/line.d.ts +4 -1
  43. package/cjs/common/segment/curve/line.js +18 -0
  44. package/cjs/common/segment/curve/line.js.map +1 -1
  45. package/cjs/common/segment/curve/move.d.ts +4 -1
  46. package/cjs/common/segment/curve/move.js +9 -0
  47. package/cjs/common/segment/curve/move.js.map +1 -1
  48. package/cjs/common/segment/curve/path.d.ts +2 -1
  49. package/cjs/common/segment/curve/path.js +5 -2
  50. package/cjs/common/segment/curve/path.js.map +1 -1
  51. package/cjs/common/segment/curve/quadratic-bezier.d.ts +6 -2
  52. package/cjs/common/segment/curve/quadratic-bezier.js +23 -5
  53. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  54. package/cjs/common/simplify.js +1 -1
  55. package/cjs/common/sort.js +1 -1
  56. package/cjs/common/split-path.js +1 -1
  57. package/cjs/common/text.js.map +1 -1
  58. package/cjs/core/application.js +2 -1
  59. package/cjs/core/camera.js +1 -1
  60. package/cjs/core/constants.js +1 -1
  61. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +4 -55
  62. package/cjs/core/contributions/textMeasure/AtextMeasure.js +18 -105
  63. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  64. package/cjs/core/contributions/textMeasure/layout.d.ts +1 -0
  65. package/cjs/core/contributions/textMeasure/layout.js +30 -20
  66. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  67. package/cjs/core/core-modules.js +1 -1
  68. package/cjs/core/global-module.js +2 -0
  69. package/cjs/core/global.js +1 -1
  70. package/cjs/core/graphic-utils.js +1 -1
  71. package/cjs/core/index.js +1 -1
  72. package/cjs/core/layer-service.js +1 -1
  73. package/cjs/core/layer.js +1 -1
  74. package/cjs/core/light.js +1 -1
  75. package/cjs/core/stage.d.ts +0 -3
  76. package/cjs/core/stage.js +3 -12
  77. package/cjs/core/stage.js.map +1 -1
  78. package/cjs/core/window.js +1 -1
  79. package/cjs/event/event-manager.d.ts +0 -1
  80. package/cjs/event/event-manager.js +1 -1
  81. package/cjs/event/event-manager.js.map +1 -1
  82. package/cjs/event/event-system.js +1 -2
  83. package/cjs/event/event-system.js.map +1 -1
  84. package/cjs/graphic/builtin-symbol/arrow.js +2 -2
  85. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  86. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -2
  87. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  88. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -2
  89. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  90. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -2
  91. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  92. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -2
  93. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  94. package/cjs/graphic/builtin-symbol/base.d.ts +1 -0
  95. package/cjs/graphic/builtin-symbol/base.js +3 -0
  96. package/cjs/graphic/builtin-symbol/base.js.map +1 -1
  97. package/cjs/graphic/builtin-symbol/circle.js +3 -3
  98. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  99. package/cjs/graphic/builtin-symbol/close.js +3 -3
  100. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  101. package/cjs/graphic/builtin-symbol/cross.js +2 -2
  102. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  103. package/cjs/graphic/builtin-symbol/diamond.js +3 -3
  104. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  105. package/cjs/graphic/builtin-symbol/line-h.js +3 -3
  106. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  107. package/cjs/graphic/builtin-symbol/line-v.js +3 -3
  108. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  109. package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
  110. package/cjs/graphic/builtin-symbol/rect.js +28 -0
  111. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  112. package/cjs/graphic/builtin-symbol/square.js +2 -2
  113. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  114. package/cjs/graphic/builtin-symbol/star.js +2 -2
  115. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  116. package/cjs/graphic/builtin-symbol/stroke.js +2 -2
  117. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  118. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -2
  119. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  120. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -2
  121. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  122. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -2
  123. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  124. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -2
  125. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  126. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -2
  127. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  128. package/cjs/graphic/builtin-symbol/utils.d.ts +3 -1
  129. package/cjs/graphic/builtin-symbol/utils.js +11 -3
  130. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  131. package/cjs/graphic/builtin-symbol/wedge.js +2 -2
  132. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  133. package/cjs/graphic/builtin-symbol/wye.js +2 -2
  134. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  135. package/cjs/graphic/config.js +6 -2
  136. package/cjs/graphic/config.js.map +1 -1
  137. package/cjs/graphic/graphic.js +2 -1
  138. package/cjs/graphic/graphic.js.map +1 -1
  139. package/cjs/graphic/richtext/wrapper.d.ts +1 -0
  140. package/cjs/graphic/richtext/wrapper.js +1 -1
  141. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  142. package/cjs/graphic/richtext.js +2 -1
  143. package/cjs/graphic/richtext.js.map +1 -1
  144. package/cjs/graphic/text.d.ts +11 -10
  145. package/cjs/graphic/text.js +174 -91
  146. package/cjs/graphic/text.js.map +1 -1
  147. package/cjs/graphic/wrap-text.js +4 -12
  148. package/cjs/graphic/wrap-text.js.map +1 -1
  149. package/cjs/index.d.ts +1 -0
  150. package/cjs/index.js +1 -1
  151. package/cjs/index.js.map +1 -1
  152. package/cjs/interface/animate.d.ts +7 -2
  153. package/cjs/interface/animate.js.map +1 -1
  154. package/cjs/interface/graphic/path.d.ts +1 -0
  155. package/cjs/interface/graphic/path.js.map +1 -1
  156. package/cjs/interface/graphic/symbol.d.ts +2 -0
  157. package/cjs/interface/graphic/symbol.js.map +1 -1
  158. package/cjs/interface/graphic/text.d.ts +3 -3
  159. package/cjs/interface/graphic/text.js.map +1 -1
  160. package/cjs/interface/graphic.d.ts +6 -2
  161. package/cjs/interface/graphic.js.map +1 -1
  162. package/cjs/interface/path.d.ts +5 -0
  163. package/cjs/interface/path.js.map +1 -1
  164. package/cjs/interface/picker.d.ts +13 -0
  165. package/cjs/interface/picker.js.map +1 -1
  166. package/cjs/interface/stage.d.ts +0 -1
  167. package/cjs/interface/stage.js.map +1 -1
  168. package/cjs/interface/text.d.ts +1 -6
  169. package/cjs/interface/text.js.map +1 -1
  170. package/cjs/picker/constants.d.ts +2 -0
  171. package/cjs/picker/constants.js +3 -2
  172. package/cjs/picker/constants.js.map +1 -1
  173. package/cjs/picker/pick-interceptor.d.ts +7 -2
  174. package/cjs/picker/pick-interceptor.js +19 -2
  175. package/cjs/picker/pick-interceptor.js.map +1 -1
  176. package/cjs/picker/pick-modules.js +7 -4
  177. package/cjs/picker/pick-modules.js.map +1 -1
  178. package/cjs/picker/picker-service.d.ts +4 -2
  179. package/cjs/picker/picker-service.js +13 -12
  180. package/cjs/picker/picker-service.js.map +1 -1
  181. package/cjs/plugins/builtin-plugin/edit-module.d.ts +6 -5
  182. package/cjs/plugins/builtin-plugin/edit-module.js +84 -28
  183. package/cjs/plugins/builtin-plugin/edit-module.js.map +1 -1
  184. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
  185. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
  186. package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
  187. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +49 -30
  188. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +280 -217
  189. package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
  190. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  191. package/cjs/render/contributions/render/base-render.d.ts +1 -0
  192. package/cjs/render/contributions/render/base-render.js +20 -2
  193. package/cjs/render/contributions/render/base-render.js.map +1 -1
  194. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  195. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
  196. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  197. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
  198. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +30 -2
  199. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  200. package/cjs/render/contributions/render/path-render.js.map +1 -1
  201. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  202. package/cjs/render/contributions/render/symbol-render.js +15 -12
  203. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  204. package/cjs/render/contributions/render/text-render.js +23 -1
  205. package/cjs/render/contributions/render/text-render.js.map +1 -1
  206. package/cjs/render/contributions/render/utils.d.ts +1 -2
  207. package/cjs/render/contributions/render/utils.js +4 -20
  208. package/cjs/render/contributions/render/utils.js.map +1 -1
  209. package/dist/index.es.js +8796 -8187
  210. package/es/animate/Ticker/default-ticker.d.ts +4 -1
  211. package/es/animate/Ticker/default-ticker.js +10 -4
  212. package/es/animate/Ticker/default-ticker.js.map +1 -1
  213. package/es/animate/animate.js +1 -1
  214. package/es/animate/animate.js.map +1 -1
  215. package/es/animate/easing-func.d.ts +1 -0
  216. package/es/animate/easing-func.js +10 -0
  217. package/es/animate/easing-func.js.map +1 -0
  218. package/es/animate/easing.d.ts +3 -0
  219. package/es/animate/easing.js +9 -1
  220. package/es/animate/easing.js.map +1 -1
  221. package/es/color-string/store.js +1 -2
  222. package/es/common/bezier-utils.d.ts +3 -0
  223. package/es/common/bezier-utils.js +14 -0
  224. package/es/common/bezier-utils.js.map +1 -1
  225. package/es/common/bounds-context.js +2 -1
  226. package/es/common/custom-path2d.d.ts +4 -0
  227. package/es/common/custom-path2d.js +44 -12
  228. package/es/common/custom-path2d.js.map +1 -1
  229. package/es/common/morphing-utils.js +1 -1
  230. package/es/common/path-svg.js +1 -1
  231. package/es/common/polygon.js +1 -1
  232. package/es/common/rect-utils.js +1 -1
  233. package/es/common/render-area.js +1 -2
  234. package/es/common/render-command-list.js +1 -1
  235. package/es/common/render-curve.js +1 -1
  236. package/es/common/render-utils.js +1 -1
  237. package/es/common/seg-context.js +1 -1
  238. package/es/common/segment/curve/arc.d.ts +4 -1
  239. package/es/common/segment/curve/arc.js +10 -1
  240. package/es/common/segment/curve/arc.js.map +1 -1
  241. package/es/common/segment/curve/base.d.ts +4 -1
  242. package/es/common/segment/curve/base.js.map +1 -1
  243. package/es/common/segment/curve/cubic-bezier.d.ts +5 -1
  244. package/es/common/segment/curve/cubic-bezier.js +22 -1
  245. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  246. package/es/common/segment/curve/curve-context.js +6 -3
  247. package/es/common/segment/curve/curve-context.js.map +1 -1
  248. package/es/common/segment/curve/ellipse.d.ts +4 -1
  249. package/es/common/segment/curve/ellipse.js +9 -0
  250. package/es/common/segment/curve/ellipse.js.map +1 -1
  251. package/es/common/segment/curve/line.d.ts +4 -1
  252. package/es/common/segment/curve/line.js +18 -0
  253. package/es/common/segment/curve/line.js.map +1 -1
  254. package/es/common/segment/curve/move.d.ts +4 -1
  255. package/es/common/segment/curve/move.js +9 -0
  256. package/es/common/segment/curve/move.js.map +1 -1
  257. package/es/common/segment/curve/path.d.ts +2 -1
  258. package/es/common/segment/curve/path.js +5 -2
  259. package/es/common/segment/curve/path.js.map +1 -1
  260. package/es/common/segment/curve/quadratic-bezier.d.ts +6 -2
  261. package/es/common/segment/curve/quadratic-bezier.js +28 -5
  262. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  263. package/es/common/simplify.js +1 -1
  264. package/es/common/sort.js +1 -1
  265. package/es/common/split-path.js +1 -1
  266. package/es/common/text.js.map +1 -1
  267. package/es/core/application.js +2 -1
  268. package/es/core/camera.js +1 -1
  269. package/es/core/constants.js +1 -1
  270. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +4 -55
  271. package/es/core/contributions/textMeasure/AtextMeasure.js +17 -106
  272. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  273. package/es/core/contributions/textMeasure/layout.d.ts +1 -0
  274. package/es/core/contributions/textMeasure/layout.js +30 -20
  275. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  276. package/es/core/core-modules.js +1 -1
  277. package/es/core/global-module.js +2 -0
  278. package/es/core/global.js +1 -1
  279. package/es/core/graphic-utils.js +1 -1
  280. package/es/core/index.js +1 -1
  281. package/es/core/layer-service.js +1 -1
  282. package/es/core/layer.js +1 -1
  283. package/es/core/light.js +1 -1
  284. package/es/core/stage.d.ts +0 -3
  285. package/es/core/stage.js +2 -13
  286. package/es/core/stage.js.map +1 -1
  287. package/es/core/window.js +1 -1
  288. package/es/event/event-manager.d.ts +0 -1
  289. package/es/event/event-manager.js +1 -1
  290. package/es/event/event-manager.js.map +1 -1
  291. package/es/event/event-system.js +1 -2
  292. package/es/event/event-system.js.map +1 -1
  293. package/es/graphic/builtin-symbol/arrow.js +2 -2
  294. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  295. package/es/graphic/builtin-symbol/arrow2-down.js +2 -2
  296. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  297. package/es/graphic/builtin-symbol/arrow2-left.js +2 -2
  298. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  299. package/es/graphic/builtin-symbol/arrow2-right.js +2 -2
  300. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  301. package/es/graphic/builtin-symbol/arrow2-up.js +2 -2
  302. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  303. package/es/graphic/builtin-symbol/base.d.ts +1 -0
  304. package/es/graphic/builtin-symbol/base.js +3 -0
  305. package/es/graphic/builtin-symbol/base.js.map +1 -1
  306. package/es/graphic/builtin-symbol/circle.js +3 -3
  307. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  308. package/es/graphic/builtin-symbol/close.js +3 -3
  309. package/es/graphic/builtin-symbol/close.js.map +1 -1
  310. package/es/graphic/builtin-symbol/cross.js +2 -2
  311. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  312. package/es/graphic/builtin-symbol/diamond.js +3 -3
  313. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  314. package/es/graphic/builtin-symbol/line-h.js +3 -3
  315. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  316. package/es/graphic/builtin-symbol/line-v.js +3 -3
  317. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  318. package/es/graphic/builtin-symbol/rect.d.ts +2 -1
  319. package/es/graphic/builtin-symbol/rect.js +28 -0
  320. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  321. package/es/graphic/builtin-symbol/square.js +2 -2
  322. package/es/graphic/builtin-symbol/square.js.map +1 -1
  323. package/es/graphic/builtin-symbol/star.js +2 -2
  324. package/es/graphic/builtin-symbol/star.js.map +1 -1
  325. package/es/graphic/builtin-symbol/stroke.js +2 -2
  326. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  327. package/es/graphic/builtin-symbol/thin-triangle.js +2 -2
  328. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  329. package/es/graphic/builtin-symbol/triangle-down.js +2 -2
  330. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  331. package/es/graphic/builtin-symbol/triangle-left.js +2 -2
  332. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  333. package/es/graphic/builtin-symbol/triangle-right.js +2 -2
  334. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  335. package/es/graphic/builtin-symbol/triangle-up.js +2 -2
  336. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  337. package/es/graphic/builtin-symbol/utils.d.ts +3 -1
  338. package/es/graphic/builtin-symbol/utils.js +12 -4
  339. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  340. package/es/graphic/builtin-symbol/wedge.js +2 -2
  341. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  342. package/es/graphic/builtin-symbol/wye.js +2 -2
  343. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  344. package/es/graphic/config.js +6 -2
  345. package/es/graphic/config.js.map +1 -1
  346. package/es/graphic/graphic.js +2 -1
  347. package/es/graphic/graphic.js.map +1 -1
  348. package/es/graphic/richtext/wrapper.d.ts +1 -0
  349. package/es/graphic/richtext/wrapper.js +1 -1
  350. package/es/graphic/richtext/wrapper.js.map +1 -1
  351. package/es/graphic/richtext.js +2 -1
  352. package/es/graphic/richtext.js.map +1 -1
  353. package/es/graphic/text.d.ts +11 -10
  354. package/es/graphic/text.js +169 -90
  355. package/es/graphic/text.js.map +1 -1
  356. package/es/graphic/wrap-text.js +4 -12
  357. package/es/graphic/wrap-text.js.map +1 -1
  358. package/es/index.d.ts +1 -0
  359. package/es/index.js +2 -0
  360. package/es/index.js.map +1 -1
  361. package/es/interface/animate.d.ts +7 -2
  362. package/es/interface/animate.js.map +1 -1
  363. package/es/interface/graphic/path.d.ts +1 -0
  364. package/es/interface/graphic/path.js.map +1 -1
  365. package/es/interface/graphic/symbol.d.ts +2 -0
  366. package/es/interface/graphic/symbol.js.map +1 -1
  367. package/es/interface/graphic/text.d.ts +3 -3
  368. package/es/interface/graphic/text.js.map +1 -1
  369. package/es/interface/graphic.d.ts +6 -2
  370. package/es/interface/graphic.js.map +1 -1
  371. package/es/interface/path.d.ts +5 -0
  372. package/es/interface/path.js.map +1 -1
  373. package/es/interface/picker.d.ts +13 -0
  374. package/es/interface/picker.js.map +1 -1
  375. package/es/interface/stage.d.ts +0 -1
  376. package/es/interface/stage.js.map +1 -1
  377. package/es/interface/text.d.ts +1 -6
  378. package/es/interface/text.js.map +1 -1
  379. package/es/picker/constants.d.ts +2 -0
  380. package/es/picker/constants.js +4 -0
  381. package/es/picker/constants.js.map +1 -1
  382. package/es/picker/pick-interceptor.d.ts +7 -2
  383. package/es/picker/pick-interceptor.js +19 -1
  384. package/es/picker/pick-interceptor.js.map +1 -1
  385. package/es/picker/pick-modules.js +5 -3
  386. package/es/picker/pick-modules.js.map +1 -1
  387. package/es/picker/picker-service.d.ts +4 -2
  388. package/es/picker/picker-service.js +13 -13
  389. package/es/picker/picker-service.js.map +1 -1
  390. package/es/plugins/builtin-plugin/edit-module.d.ts +6 -5
  391. package/es/plugins/builtin-plugin/edit-module.js +79 -25
  392. package/es/plugins/builtin-plugin/edit-module.js.map +1 -1
  393. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
  394. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
  395. package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
  396. package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +49 -30
  397. package/es/plugins/builtin-plugin/richtext-edit-plugin.js +283 -214
  398. package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
  399. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  400. package/es/render/contributions/render/base-render.d.ts +1 -0
  401. package/es/render/contributions/render/base-render.js +21 -2
  402. package/es/render/contributions/render/base-render.js.map +1 -1
  403. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  404. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
  405. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  406. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
  407. package/es/render/contributions/render/contributions/symbol-contribution-render.js +26 -0
  408. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  409. package/es/render/contributions/render/path-render.js.map +1 -1
  410. package/es/render/contributions/render/polygon-render.js.map +1 -1
  411. package/es/render/contributions/render/symbol-render.js +16 -13
  412. package/es/render/contributions/render/symbol-render.js.map +1 -1
  413. package/es/render/contributions/render/text-render.js +23 -1
  414. package/es/render/contributions/render/text-render.js.map +1 -1
  415. package/es/render/contributions/render/utils.d.ts +1 -2
  416. package/es/render/contributions/render/utils.js +0 -18
  417. package/es/render/contributions/render/utils.js.map +1 -1
  418. package/package.json +3 -3
  419. package/cjs/graphic/text2.d.ts +0 -81
  420. package/cjs/graphic/text2.js +0 -288
  421. package/cjs/graphic/text2.js.map +0 -1
  422. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.d.ts +0 -16
  423. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js +0 -48
  424. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js.map +0 -1
  425. package/es/graphic/text2.d.ts +0 -81
  426. package/es/graphic/text2.js +0 -293
  427. package/es/graphic/text2.js.map +0 -1
  428. package/es/plugins/builtin-plugin/auto-refresh-plugin.d.ts +0 -16
  429. package/es/plugins/builtin-plugin/auto-refresh-plugin.js +0 -41
  430. package/es/plugins/builtin-plugin/auto-refresh-plugin.js.map +0 -1
@@ -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 } 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"]}
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"]}
@@ -4,6 +4,8 @@ import { LineCurve } from "./line";
4
4
 
5
5
  import { CubicBezierCurve } from "./cubic-bezier";
6
6
 
7
+ import { QuadraticBezierCurve } from "./quadratic-bezier";
8
+
7
9
  export class CurveContext {
8
10
  constructor(path) {
9
11
  this.path = path, this._lastX = this._lastY = this._startX = this._startY = 0;
@@ -13,17 +15,18 @@ export class CurveContext {
13
15
  }
14
16
  lineTo(x, y) {
15
17
  const curve = this.addLinearCurve(x, y);
16
- this.path.curves.push(curve), this._lastX = x, this._lastY = y;
18
+ this.path.addCurve(curve), this._lastX = x, this._lastY = y;
17
19
  }
18
20
  addLinearCurve(x, y) {
19
21
  return new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));
20
22
  }
21
23
  quadraticCurveTo(aCPx, aCPy, aX, aY) {
22
- throw new Error("CurveContext不支持调用quadraticCurveTo");
24
+ const curve = new QuadraticBezierCurve(new Point(this._lastX, this._lastY), new Point(aCPx, aCPy), new Point(aX, aY));
25
+ this.path.addCurve(curve), this._lastX = aX, this._lastY = aY;
23
26
  }
24
27
  bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
25
28
  const curve = new CubicBezierCurve(new Point(this._lastX, this._lastY), new Point(cp1x, cp1y), new Point(cp2x, cp2y), new Point(x, y));
26
- this.path.curves.push(curve), this._lastX = x, this._lastY = y;
29
+ this.path.addCurve(curve), this._lastX = x, this._lastY = y;
27
30
  }
28
31
  arcTo(aX1, aY1, aX2, aY2, aRadius) {
29
32
  throw new Error("CurveContext不支持调用arcTo");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/curve-context.ts"],"names":[],"mappings":"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","file":"curve-context.js","sourcesContent":["import type { IPath2D, ICustomPath2D, ILineCurve, ICubicBezierCurve } from '../../../interface';\nimport { Point } from '@visactor/vutils';\nimport { LineCurve } from './line';\nimport { CubicBezierCurve } from './cubic-bezier';\n\nexport class CurveContext implements IPath2D {\n declare path: ICustomPath2D;\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n\n constructor(path: ICustomPath2D) {\n this.path = path;\n this._lastX = this._lastY = this._startX = this._startY = 0;\n }\n moveTo(x: number, y: number) {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n return this;\n }\n lineTo(x: number, y: number) {\n const curve = this.addLinearCurve(x, y);\n this.path.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n // linear\n protected addLinearCurve(x: number, y: number): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n return curve;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n throw new Error('CurveContext不支持调用quadraticCurveTo');\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n const curve: ICubicBezierCurve = new CubicBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(cp1x, cp1y),\n new Point(cp2x, cp2y),\n new Point(x, y)\n );\n this.path.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n throw new Error('CurveContext不支持调用arcTo');\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 throw new Error('CurveContext不支持调用ellipse');\n }\n rect(x: number, y: number, w: number, h: number) {\n throw new Error('CurveContext不支持调用rect');\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n throw new Error('CurveContext不支持调用arc');\n }\n closePath(): void {\n if (this.path.curves.length < 2) {\n return;\n }\n this.lineTo(this._startX, this._startY);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/curve-context.ts"],"names":[],"mappings":"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","file":"curve-context.js","sourcesContent":["import type { IPath2D, ICustomPath2D, ILineCurve, ICubicBezierCurve, IQuadraticBezierCurve } from '../../../interface';\nimport { Point } from '@visactor/vutils';\nimport { LineCurve } from './line';\nimport { CubicBezierCurve } from './cubic-bezier';\nimport { QuadraticBezierCurve } from './quadratic-bezier';\n\nexport class CurveContext implements IPath2D {\n declare path: ICustomPath2D;\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n\n constructor(path: ICustomPath2D) {\n this.path = path;\n this._lastX = this._lastY = this._startX = this._startY = 0;\n }\n moveTo(x: number, y: number) {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n return this;\n }\n lineTo(x: number, y: number) {\n const curve = this.addLinearCurve(x, y);\n this.path.addCurve(curve);\n this._lastX = x;\n this._lastY = y;\n }\n // linear\n protected addLinearCurve(x: number, y: number): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n return curve;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n const curve: IQuadraticBezierCurve = new QuadraticBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(aCPx, aCPy),\n new Point(aX, aY)\n );\n this.path.addCurve(curve);\n this._lastX = aX;\n this._lastY = aY;\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n const curve: ICubicBezierCurve = new CubicBezierCurve(\n new Point(this._lastX, this._lastY),\n new Point(cp1x, cp1y),\n new Point(cp2x, cp2y),\n new Point(x, y)\n );\n this.path.addCurve(curve);\n this._lastX = x;\n this._lastY = y;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n throw new Error('CurveContext不支持调用arcTo');\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 throw new Error('CurveContext不支持调用ellipse');\n }\n rect(x: number, y: number, w: number, h: number) {\n throw new Error('CurveContext不支持调用rect');\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n throw new Error('CurveContext不支持调用arc');\n }\n closePath(): void {\n if (this.path.curves.length < 2) {\n return;\n }\n this.lineTo(this._startX, this._startY);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { IPoint, IPointLike } from '@visactor/vutils';
2
- import type { IEllipseCurve, IDirection } from '../../../interface';
2
+ import type { IEllipseCurve, IDirection, IPath2D } from '../../../interface';
3
3
  import { Curve } from './base';
4
4
  export declare class EllipseCurve extends Curve implements IEllipseCurve {
5
5
  type: number;
@@ -15,4 +15,7 @@ export declare class EllipseCurve extends Curve implements IEllipseCurve {
15
15
  getAngleAt(t: number): number;
16
16
  protected calcLength(): number;
17
17
  protected calcProjLength(direction: IDirection): number;
18
+ draw(path: IPath2D, percent: number): void;
19
+ getYAt(x: number): number;
20
+ includeX(x: number): boolean;
18
21
  }
@@ -20,5 +20,14 @@ export class EllipseCurve extends Curve {
20
20
  calcProjLength(direction) {
21
21
  throw new Error("QuadraticBezierCurve暂不支持updateLength");
22
22
  }
23
+ draw(path, percent) {
24
+ throw new Error("暂不支持");
25
+ }
26
+ getYAt(x) {
27
+ throw new Error("QuadraticBezierCurve暂不支持getYAt");
28
+ }
29
+ includeX(x) {
30
+ throw new Error("QuadraticBezierCurve暂不支持includeX");
31
+ }
23
32
  }
24
33
  //# sourceMappingURL=ellipse.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/ellipse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,YAAa,SAAQ,KAAK;IASrC,YACE,EAAU,EACV,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,aAAuB;QAEvB,KAAK,EAAE,CAAC;QAjBV,SAAI,GAAW,aAAa,CAAC,YAAY,CAAC;QAkBxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"ellipse.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IEllipseCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class EllipseCurve extends Curve implements IEllipseCurve {\n type: number = CurveTypeEnum.EllipseCurve;\n declare p0: IPoint;\n declare radiusX: number;\n declare radiusY: number;\n declare rotation: number;\n declare startAngle: number;\n declare endAngle: number;\n declare anticlockwise?: boolean;\n constructor(\n p0: IPoint,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n super();\n this.p0 = p0;\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.anticlockwise = anticlockwise;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('EllipseCurve暂不支持getPointAt');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n protected calcLength(): number {\n throw new Error('EllipseCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/ellipse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,YAAa,SAAQ,KAAK;IASrC,YACE,EAAU,EACV,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,aAAuB;QAEvB,KAAK,EAAE,CAAC;QAjBV,SAAI,GAAW,aAAa,CAAC,YAAY,CAAC;QAkBxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAa,EAAE,OAAe;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,CAAS;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ,CAAC,CAAS;QAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF","file":"ellipse.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IEllipseCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class EllipseCurve extends Curve implements IEllipseCurve {\n type: number = CurveTypeEnum.EllipseCurve;\n declare p0: IPoint;\n declare radiusX: number;\n declare radiusY: number;\n declare rotation: number;\n declare startAngle: number;\n declare endAngle: number;\n declare anticlockwise?: boolean;\n constructor(\n p0: IPoint,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n anticlockwise?: boolean\n ) {\n super();\n this.p0 = p0;\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.anticlockwise = anticlockwise;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('EllipseCurve暂不支持getPointAt');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n protected calcLength(): number {\n throw new Error('EllipseCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n\n draw(path: IPath2D, percent: number) {\n throw new Error('暂不支持');\n }\n\n getYAt(x: number): number {\n throw new Error('QuadraticBezierCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('QuadraticBezierCurve暂不支持includeX');\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { IPoint, IPointLike } from '@visactor/vutils';
2
- import type { ILineCurve, IDirection } from '../../../interface';
2
+ import type { ILineCurve, IDirection, IPath2D } from '../../../interface';
3
3
  import { Curve } from './base';
4
4
  export declare function divideLinear(curve: ILineCurve, t: number): ILineCurve[];
5
5
  export declare class LineCurve extends Curve implements ILineCurve {
@@ -15,4 +15,7 @@ export declare class LineCurve extends Curve implements ILineCurve {
15
15
  protected _validPoint(): boolean;
16
16
  protected calcLength(): number;
17
17
  protected calcProjLength(direction: IDirection): number;
18
+ draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
19
+ includeX(x: number): boolean;
20
+ getYAt(x: number): number;
18
21
  }
@@ -30,5 +30,23 @@ export class LineCurve extends Curve {
30
30
  calcProjLength(direction) {
31
31
  return direction === Direction.ROW ? abs(this.p0.x - this.p1.x) : direction === Direction.COLUMN ? abs(this.p0.y - this.p1.y) : 0;
32
32
  }
33
+ draw(path, x, y, sx, sy, percent) {
34
+ if (path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y), percent >= 1) path.lineTo(this.p1.x * sx + x, this.p1.y * sy + y); else if (percent > 0) {
35
+ const p = this.getPointAt(percent);
36
+ path.lineTo(p.x * sx + x, p.y * sy + y);
37
+ }
38
+ }
39
+ includeX(x) {
40
+ return x >= this.p0.x && x <= this.p1.x || x >= this.p1.x && x <= this.p0.x;
41
+ }
42
+ getYAt(x) {
43
+ if (this.includeX(x)) {
44
+ let minP = this.p0, maxP = this.p1;
45
+ this.p0.x > this.p1.x && (minP = this.p1, maxP = this.p0);
46
+ const percent = (x - minP.x) / (maxP.x - minP.x);
47
+ return minP.y + percent * (maxP.y - minP.y);
48
+ }
49
+ return 1 / 0;
50
+ }
33
51
  }
34
52
  //# sourceMappingURL=line.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,CAAS;IACvD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAGzB,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAG7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAOlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAPV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAQrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAES,WAAW;QACnB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,cAAc,CAAC,SAAqB;QAC5C,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;aAAM,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\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.lineTo(this.p1.x * sx + x, this.p1.y * sy + y);\n } else if (percent > 0) {\n const p = this.getPointAt(percent);\n path.lineTo(p.x * sx + x, p.y * sy + y);\n }\n }\n\n includeX(x: number): boolean {\n return (x >= this.p0.x && x <= this.p1.x) || (x >= this.p1.x && x <= this.p0.x);\n }\n\n getYAt(x: number): number {\n if (this.includeX(x)) {\n let minP = this.p0;\n let maxP = this.p1;\n if (this.p0.x > this.p1.x) {\n minP = this.p1;\n maxP = this.p0;\n }\n const percent = (x - minP.x) / (maxP.x - minP.x);\n return minP.y + percent * (maxP.y - minP.y);\n }\n return Infinity;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { IPoint, IPointLike } from '@visactor/vutils';
2
- import type { IMoveCurve, IDirection } from '../../../interface';
2
+ import type { IMoveCurve, IDirection, IPath2D } from '../../../interface';
3
3
  import { Curve } from './base';
4
4
  export declare class MoveCurve extends Curve implements IMoveCurve {
5
5
  type: number;
@@ -10,4 +10,7 @@ export declare class MoveCurve extends Curve implements IMoveCurve {
10
10
  getPointAt(t: number): IPointLike;
11
11
  protected calcLength(): number;
12
12
  protected calcProjLength(direction: IDirection): number;
13
+ draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
14
+ includeX(x: number): boolean;
15
+ getYAt(x: number): number;
13
16
  }
@@ -18,5 +18,14 @@ export class MoveCurve extends Curve {
18
18
  calcProjLength(direction) {
19
19
  throw new Error("QuadraticBezierCurve暂不支持updateLength");
20
20
  }
21
+ draw(path, x, y, sx, sy, percent) {
22
+ path.moveTo(this.p1.x * sx + x, this.p1.y * sy + y);
23
+ }
24
+ includeX(x) {
25
+ return !1;
26
+ }
27
+ getYAt(x) {
28
+ return 1 / 0;
29
+ }
21
30
  }
22
31
  //# sourceMappingURL=move.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAIlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAJV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAKrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAIlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAJV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAKrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAa,EAAE,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,OAAe;QAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,CAAS;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection, IPath2D } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p1.x * sx + x, this.p1.y * sy + y);\n }\n\n includeX(x: number): boolean {\n return false;\n }\n getYAt(x: number): number {\n return Infinity;\n }\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';
2
2
  import type { ICurvePath, ICurve } from '../../../interface';
3
3
  export declare class CurvePath implements ICurvePath<IPoint> {
4
- curves: ICurve<IPoint>[];
4
+ _curves: ICurve<IPoint>[];
5
5
  bounds: IAABBBounds;
6
6
  constructor();
7
+ get curves(): ICurve<IPoint>[];
7
8
  getCurveLengths(): number[];
8
9
  getPointAt(t: number): IPointLike;
9
10
  getLength(): number;
@@ -2,10 +2,13 @@ import { AABBBounds } from "@visactor/vutils";
2
2
 
3
3
  export class CurvePath {
4
4
  constructor() {
5
- this.curves = [], this.bounds = new AABBBounds;
5
+ this._curves = [], this.bounds = new AABBBounds;
6
+ }
7
+ get curves() {
8
+ return this._curves;
6
9
  }
7
10
  getCurveLengths() {
8
- return this.curves.map((curve => curve.getLength()));
11
+ return this._curves.map((curve => curve.getLength()));
9
12
  }
10
13
  getPointAt(t) {
11
14
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IAGpB;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,SAAS;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"path.js","sourcesContent":["import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { ICurvePath, ICurve } from '../../../interface';\n\nexport class CurvePath implements ICurvePath<IPoint> {\n curves: ICurve<IPoint>[];\n bounds: IAABBBounds;\n constructor() {\n this.curves = [];\n this.bounds = new AABBBounds();\n }\n getCurveLengths(): number[] {\n return this.curves.map(curve => curve.getLength());\n }\n getPointAt(t: number): IPointLike {\n return { x: 0, y: 0 };\n }\n getLength(): number {\n return 0;\n }\n getBounds() {\n return this.bounds;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IAGpB;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,SAAS;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"path.js","sourcesContent":["import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { ICurvePath, ICurve } from '../../../interface';\n\nexport class CurvePath implements ICurvePath<IPoint> {\n _curves: ICurve<IPoint>[];\n bounds: IAABBBounds;\n constructor() {\n this._curves = [];\n this.bounds = new AABBBounds();\n }\n get curves(): ICurve<IPoint>[] {\n return this._curves;\n }\n\n getCurveLengths(): number[] {\n return this._curves.map(curve => curve.getLength());\n }\n getPointAt(t: number): IPointLike {\n return { x: 0, y: 0 };\n }\n getLength(): number {\n return 0;\n }\n getBounds() {\n return this.bounds;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { IDirection, IQuadraticBezierCurve } from '../../../interface';
1
+ import type { IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';
2
2
  import { Curve } from './base';
3
- import type { IPoint, IPointLike } from '@visactor/vutils';
3
+ import { type IPoint, type IPointLike } from '@visactor/vutils';
4
4
  export declare class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {
5
5
  type: number;
6
6
  originP1?: IPointLike;
@@ -9,8 +9,12 @@ export declare class QuadraticBezierCurve extends Curve implements IQuadraticBez
9
9
  readonly p1: IPoint;
10
10
  readonly p2: IPoint;
11
11
  constructor(p0: IPoint, p1: IPoint, p2: IPoint);
12
+ protected _validPoint(): boolean;
12
13
  getPointAt(t: number): IPointLike;
13
14
  protected calcLength(): number;
14
15
  protected calcProjLength(direction: IDirection): number;
15
16
  getAngleAt(t: number): number;
17
+ draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number): void;
18
+ getYAt(x: number): number;
19
+ includeX(x: number): boolean;
16
20
  }
@@ -1,23 +1,46 @@
1
- import { CurveTypeEnum } from "src/common/enums";
1
+ import { quadLength, quadPointAt } from "../../bezier-utils";
2
+
3
+ import { CurveTypeEnum, Direction } from "../../enums";
2
4
 
3
5
  import { Curve } from "./base";
4
6
 
7
+ import { abs, atan2, max, min } from "@visactor/vutils";
8
+
9
+ import { divideQuad } from "./cubic-bezier";
10
+
5
11
  export class QuadraticBezierCurve extends Curve {
6
12
  constructor(p0, p1, p2) {
7
13
  super(), this.type = CurveTypeEnum.QuadraticBezierCurve, this.p0 = p0, this.p1 = p1,
8
14
  this.p2 = p2;
9
15
  }
16
+ _validPoint() {
17
+ return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y);
18
+ }
10
19
  getPointAt(t) {
11
- throw new Error("QuadraticBezierCurve暂不支持getPointAt");
20
+ if (!1 !== this.defined) return quadPointAt(this.p0, this.p1, this.p2, t);
21
+ throw new Error("defined为false的点不能getPointAt");
12
22
  }
13
23
  calcLength() {
14
- throw new Error("QuadraticBezierCurve暂不支持updateLength");
24
+ return this._validPoint() ? quadLength(this.p0, this.p1, this.p2, 0) : 60;
15
25
  }
16
26
  calcProjLength(direction) {
17
- throw new Error("QuadraticBezierCurve暂不支持updateLength");
27
+ return direction === Direction.ROW ? abs(this.p0.x - this.p2.x) : direction === Direction.COLUMN ? abs(this.p0.y - this.p2.y) : 0;
18
28
  }
19
29
  getAngleAt(t) {
20
- throw new Error("ArcCurve暂不支持getAngleAt");
30
+ const minT = max(t - .01, 0), maxT = min(t + .01, 1), minP = this.getPointAt(minT), maxP = this.getPointAt(maxT);
31
+ return atan2(maxP.y - minP.y, maxP.x - minP.x);
32
+ }
33
+ draw(path, x, y, sx, sy, percent) {
34
+ if (path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y), percent >= 1) path.quadraticCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y); else if (percent > 0) {
35
+ const [curve1] = divideQuad(this, percent);
36
+ path.quadraticCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y);
37
+ }
38
+ }
39
+ getYAt(x) {
40
+ throw new Error("QuadraticBezierCurve暂不支持getYAt");
41
+ }
42
+ includeX(x) {
43
+ throw new Error("QuadraticBezierCurve暂不支持includeX");
21
44
  }
22
45
  }
23
46
  //# sourceMappingURL=quadratic-bezier.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAQ7C,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU;QAC5C,KAAK,EAAE,CAAC;QARV,SAAI,GAAW,aAAa,CAAC,oBAAoB,CAAC;QAShD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,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","file":"quadratic-bezier.js","sourcesContent":["import { CurveTypeEnum } from 'src/common/enums';\nimport type { IDirection, IQuadraticBezierCurve } from '../../../interface';\nimport { Curve } from './base';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('QuadraticBezierCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('QuadraticBezierCurve暂不支持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
+ {"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"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","file":"quadratic-bezier.js","sourcesContent":["import type { IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';\nimport { quadLength, quadPointAt } from '../../bezier-utils';\nimport { CurveTypeEnum, Direction } from '../../enums';\nimport { Curve } from './base';\nimport { abs, atan2, max, min, type IPoint, type IPointLike } from '@visactor/vutils';\nimport { divideQuad } from './cubic-bezier';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n\n protected _validPoint(): boolean {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y);\n }\n\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return quadPointAt(this.p0, this.p1, this.p2, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n protected calcLength(): number {\n if (this._validPoint()) {\n return quadLength(this.p0, this.p1, this.p2, 0);\n }\n // 默认长度不好给\n return 60;\n }\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p2.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p2.y);\n }\n return 0;\n }\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 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.quadraticCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y);\n } else if (percent > 0) {\n const [curve1] = divideQuad(this, percent);\n path.quadraticCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y);\n }\n }\n\n getYAt(x: number): number {\n throw new Error('QuadraticBezierCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('QuadraticBezierCurve暂不支持includeX');\n }\n}\n"]}
@@ -30,4 +30,4 @@ export function flatten_simplify(points, tolerance, highestQuality) {
30
30
  if (points.length <= 10) return points;
31
31
  return points = highestQuality ? points : simplifyRadialDist(points, void 0 !== tolerance ? tolerance * tolerance : 1);
32
32
  }
33
- //# sourceMappingURL=simplify.js.map
33
+ //# sourceMappingURL=simplify.js.map
package/es/common/sort.js CHANGED
@@ -94,4 +94,4 @@ export function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
94
94
  !1)), reverse);
95
95
  return result;
96
96
  }
97
- //# sourceMappingURL=sort.js.map
97
+ //# sourceMappingURL=sort.js.map
@@ -248,4 +248,4 @@ export const splitPath = (path, count) => {
248
248
  }
249
249
  return res;
250
250
  };
251
- //# sourceMappingURL=split-path.js.map
251
+ //# sourceMappingURL=split-path.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/text.ts"],"names":[],"mappings":"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","file":"text.js","sourcesContent":["// 存放一些公共方法,公共配置\n\nimport { isNil, isString, isValid, lowerCamelCaseToMiddle } from '@visactor/vutils';\nimport type { IText, ITextGraphicAttribute, TextAlignType, TextBaselineType } from '../interface';\n\n// TODO: 更好的方案\n/**\n * 用于绘制的时候偏移\n * 经验值,来源于 https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-scenegraph/src/util/text.js\n * @param baseline\n * @param h\n * @returns\n */\nexport function textDrawOffsetY(baseline: TextBaselineType, h: number): number {\n const offset =\n baseline === 'top'\n ? Math.ceil(0.79 * h)\n : baseline === 'middle'\n ? Math.round(0.3 * h)\n : baseline === 'bottom'\n ? Math.round(-0.21 * h)\n : 0;\n return offset;\n}\n\n/**\n * 用于绘制的时候偏移\n * @param textAlign\n * @param width\n * @returns\n */\nexport function textDrawOffsetX(textAlign: TextAlignType, width: number): number {\n if (textAlign === 'end' || textAlign === 'right') {\n return -width;\n } else if (textAlign === 'center') {\n return -width / 2;\n }\n return 0;\n}\n\n/**\n * 用于计算布局的偏移,相对于xy的偏移\n * 经验值,来源于 https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-scenegraph/src/util/text.js\n * @param baseline\n * @param lineHeight\n * @returns\n */\nexport function textLayoutOffsetY(\n baseline: TextBaselineType,\n lineHeight: number,\n fontSize: number,\n buf: number = 0\n): number {\n if (baseline === 'middle') {\n return -lineHeight / 2;\n }\n if (baseline === 'top') {\n return 0;\n }\n if (baseline === 'bottom') {\n return buf - lineHeight;\n }\n if (!baseline || baseline === 'alphabetic') {\n if (!fontSize) {\n fontSize = lineHeight;\n }\n return -(lineHeight - fontSize) / 2 - 0.79 * fontSize;\n }\n return 0;\n}\n\nexport function textAttributesToStyle(attrs: ITextGraphicAttribute) {\n const stringTypes = ['textAlign', 'fontFamily', 'fontVariant', 'fontStyle', 'fontWeight'];\n const pxKeys = ['fontSize', 'lineHeight'];\n const style: any = {};\n const parsePxValue = (value: string | number) => {\n return /^\\d+(\\.\\d+)?$/.test(`${value}`) ? `${value}px` : `${value}`;\n };\n\n stringTypes.forEach(key => {\n if ((attrs as any)[key]) {\n style[lowerCamelCaseToMiddle(key)] = (attrs as any)[key];\n }\n });\n\n pxKeys.forEach(key => {\n const styleKey = lowerCamelCaseToMiddle(key);\n if (!isNil((attrs as any)[key])) {\n style[styleKey] = parsePxValue((attrs as any)[key]);\n }\n });\n\n if (isValid(attrs.maxLineWidth)) {\n style['max-width'] = parsePxValue(attrs.maxLineWidth);\n }\n\n if (attrs.underline) {\n style['text-decoration'] = 'underline';\n } else if (attrs.lineThrough) {\n style['text-decoration'] = 'line-through';\n }\n\n if (attrs.fill) {\n if (isString(attrs.fill)) {\n style.color = attrs.fill;\n }\n }\n\n return style;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/text.ts"],"names":[],"mappings":"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","file":"text.js","sourcesContent":["// 存放一些公共方法,公共配置\n\nimport { isNil, isString, isValid, lowerCamelCaseToMiddle } from '@visactor/vutils';\nimport type { ITextGraphicAttribute, TextAlignType, TextBaselineType } from '../interface';\n\n// TODO: 更好的方案\n/**\n * 用于绘制的时候偏移\n * 经验值,来源于 https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-scenegraph/src/util/text.js\n * @param baseline\n * @param h\n * @returns\n */\nexport function textDrawOffsetY(baseline: TextBaselineType, h: number): number {\n const offset =\n baseline === 'top'\n ? Math.ceil(0.79 * h)\n : baseline === 'middle'\n ? Math.round(0.3 * h)\n : baseline === 'bottom'\n ? Math.round(-0.21 * h)\n : 0;\n return offset;\n}\n\n/**\n * 用于绘制的时候偏移\n * @param textAlign\n * @param width\n * @returns\n */\nexport function textDrawOffsetX(textAlign: TextAlignType, width: number): number {\n if (textAlign === 'end' || textAlign === 'right') {\n return -width;\n } else if (textAlign === 'center') {\n return -width / 2;\n }\n return 0;\n}\n\n/**\n * 用于计算布局的偏移\n * 经验值,来源于 https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-scenegraph/src/util/text.js\n * @param baseline\n * @param lineHeight\n * @returns\n */\nexport function textLayoutOffsetY(\n baseline: TextBaselineType,\n lineHeight: number,\n fontSize: number,\n buf: number = 0\n): number {\n if (baseline === 'middle') {\n return -lineHeight / 2;\n }\n if (baseline === 'top') {\n return 0;\n }\n if (baseline === 'bottom') {\n return buf - lineHeight;\n }\n if (!baseline || baseline === 'alphabetic') {\n if (!fontSize) {\n fontSize = lineHeight;\n }\n return -(lineHeight - fontSize) / 2 - 0.79 * fontSize;\n }\n return 0;\n}\n\nexport function textAttributesToStyle(attrs: ITextGraphicAttribute) {\n const stringTypes = ['textAlign', 'fontFamily', 'fontVariant', 'fontStyle', 'fontWeight'];\n const pxKeys = ['fontSize', 'lineHeight'];\n const style: any = {};\n const parsePxValue = (value: string | number) => {\n return /^\\d+(\\.\\d+)?$/.test(`${value}`) ? `${value}px` : `${value}`;\n };\n\n stringTypes.forEach(key => {\n if (attrs[key]) {\n style[lowerCamelCaseToMiddle(key)] = attrs[key];\n }\n });\n\n pxKeys.forEach(key => {\n const styleKey = lowerCamelCaseToMiddle(key);\n if (!isNil(attrs[key])) {\n style[styleKey] = parsePxValue(attrs[key]);\n }\n });\n\n if (isValid(attrs.maxLineWidth)) {\n style['max-width'] = parsePxValue(attrs.maxLineWidth);\n }\n\n if (attrs.underline) {\n style['text-decoration'] = 'underline';\n } else if (attrs.lineThrough) {\n style['text-decoration'] = 'line-through';\n }\n\n if (attrs.fill) {\n if (isString(attrs.fill)) {\n style.color = attrs.fill;\n }\n }\n\n return style;\n}\n"]}
@@ -1 +1,2 @@
1
- export const ApplicationContribution = Symbol("ApplicationContribution");
1
+ export const ApplicationContribution = Symbol("ApplicationContribution");
2
+ //# sourceMappingURL=application.js.map
package/es/core/camera.js CHANGED
@@ -66,4 +66,4 @@ export class OrthoCamera {
66
66
  export const registerOrthoCamera = () => {
67
67
  Factory.registerPlugin("OrthoCamera", OrthoCamera);
68
68
  };
69
- //# sourceMappingURL=camera.js.map
69
+ //# sourceMappingURL=camera.js.map
@@ -9,4 +9,4 @@ export const StaticLayerHandlerContribution = Symbol.for("StaticLayerHandlerCont
9
9
  export const DynamicLayerHandlerContribution = Symbol.for("DynamicLayerHandlerContribution");
10
10
 
11
11
  export const VirtualLayerHandlerContribution = Symbol.for("VirtualLayerHandlerContribution");
12
- //# sourceMappingURL=constants.js.map
12
+ //# sourceMappingURL=constants.js.map
@@ -6,64 +6,13 @@ export declare class ATextMeasure implements ITextMeasure {
6
6
  protected canvas?: ICanvas;
7
7
  protected context?: IContext2d | null;
8
8
  configure(service: IGraphicUtil, env: EnvType): void;
9
- protected _measureTextWithoutAlignBaseline(text: string, options: TextOptionsType, compatible?: boolean): {
10
- width: number;
11
- } | TextMetrics;
12
- protected _measureTextWithAlignBaseline(text: string, options: TextOptionsType, compatible?: boolean): {
13
- width: number;
14
- } | TextMetrics;
15
- protected compatibleMetrics(metrics: TextMetrics | {
16
- width: number;
17
- }, options: TextOptionsType): TextMetrics | {
18
- width: number;
19
- };
20
- protected estimate(text: string, { fontSize }: TextOptionsType): {
9
+ measureTextWidth(text: string, options: TextOptionsType): number;
10
+ estimate(text: string, { fontSize }: TextOptionsType): {
21
11
  width: number;
22
12
  height: number;
23
13
  };
24
- measureTextWidth(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
25
- width: number;
26
- }): number;
27
- measureTextBoundsWidth(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
28
- width: number;
29
- }): number;
30
- measureTextBoundsLeftRight(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
31
- width: number;
32
- }): {
33
- left: any;
34
- right: any;
35
- };
36
- measureTextPixelHeight(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
37
- width: number;
38
- }): number;
39
- measureTextPixelADscent(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
40
- width: number;
41
- }): {
42
- ascent: any;
43
- descent: any;
44
- };
45
- measureTextBoundHieght(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
46
- width: number;
47
- }): number;
48
- measureTextBoundADscent(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
49
- width: number;
50
- }): {
51
- ascent: any;
52
- descent: any;
53
- };
54
- protected measureTextBoundADscentEstimate(options: TextOptionsType): {
55
- ascent: number;
56
- descent: number;
57
- };
58
- protected measureTextBoundLeftRightEstimate(options: TextOptionsType): {
59
- left: number;
60
- right: number;
61
- };
62
- measureTextPixelADscentAndWidth(text: string, options: TextOptionsType): {
63
- width: number;
64
- ascent: number;
65
- descent: number;
66
- };
14
+ measureTextPixelHeight(text: string, options: TextOptionsType): number;
15
+ measureTextBoundHieght(text: string, options: TextOptionsType): number;
67
16
  measureText(text: string, options: TextOptionsType): TextMetrics | {
68
17
  width: number;
69
18
  };