@visactor/vrender-core 0.19.19 → 0.20.0-alpha.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 (426) hide show
  1. package/cjs/allocator/bounds-allocate.js.map +1 -1
  2. package/cjs/allocator/matrix-allocate.d.ts +1 -1
  3. package/cjs/allocator/matrix-allocate.js +2 -4
  4. package/cjs/allocator/matrix-allocate.js.map +1 -1
  5. package/cjs/animate/config.js +2 -1
  6. package/cjs/animate/custom-animate.d.ts +0 -14
  7. package/cjs/animate/custom-animate.js +2 -61
  8. package/cjs/animate/custom-animate.js.map +1 -1
  9. package/cjs/animate/group-fade.d.ts +16 -0
  10. package/cjs/animate/group-fade.js +66 -0
  11. package/cjs/animate/group-fade.js.map +1 -0
  12. package/cjs/animate/index.d.ts +1 -0
  13. package/cjs/animate/index.js +2 -1
  14. package/cjs/animate/index.js.map +1 -1
  15. package/cjs/canvas/util.d.ts +0 -1
  16. package/cjs/canvas/util.js +7 -17
  17. package/cjs/canvas/util.js.map +1 -1
  18. package/cjs/common/3d-interceptor.d.ts +3 -0
  19. package/cjs/common/3d-interceptor.js +51 -0
  20. package/cjs/common/3d-interceptor.js.map +1 -0
  21. package/cjs/common/Reflect-metadata.js +2 -1
  22. package/cjs/common/bounds-context.js +1 -2
  23. package/cjs/common/canvas-utils.d.ts +1 -1
  24. package/cjs/common/canvas-utils.js +15 -30
  25. package/cjs/common/canvas-utils.js.map +1 -1
  26. package/cjs/common/matrix.d.ts +11 -3
  27. package/cjs/common/matrix.js +97 -19
  28. package/cjs/common/matrix.js.map +1 -1
  29. package/cjs/common/morphing-utils.js +1 -1
  30. package/cjs/common/path-svg.js +1 -1
  31. package/cjs/common/polygon.js +2 -2
  32. package/cjs/common/rect-utils.js +1 -1
  33. package/cjs/common/render-area.js +1 -1
  34. package/cjs/common/render-command-list.js +1 -1
  35. package/cjs/common/render-curve.js +24 -33
  36. package/cjs/common/render-curve.js.map +1 -1
  37. package/cjs/common/render-utils.js +1 -1
  38. package/cjs/common/seg-context.js +1 -1
  39. package/cjs/common/seg-context.js.map +1 -1
  40. package/cjs/common/segment/index.d.ts +2 -4
  41. package/cjs/common/segment/index.js.map +1 -1
  42. package/cjs/common/simplify.js +1 -1
  43. package/cjs/common/sort.js +16 -13
  44. package/cjs/common/sort.js.map +1 -1
  45. package/cjs/common/split-path.js +1 -1
  46. package/cjs/common/store.js +1 -1
  47. package/cjs/common/text.d.ts +0 -2
  48. package/cjs/common/text.js +4 -11
  49. package/cjs/common/text.js.map +1 -1
  50. package/cjs/core/application.js +1 -2
  51. package/cjs/core/camera.d.ts +1 -0
  52. package/cjs/core/camera.js +11 -5
  53. package/cjs/core/camera.js.map +1 -1
  54. package/cjs/core/constants.js +1 -1
  55. package/cjs/core/core-modules.js +1 -1
  56. package/cjs/core/global-module.js +0 -2
  57. package/cjs/core/global.js +1 -1
  58. package/cjs/core/graphic-utils.js +1 -1
  59. package/cjs/core/graphic-utils.js.map +1 -1
  60. package/cjs/core/index.js +1 -1
  61. package/cjs/core/layer-service.js +1 -1
  62. package/cjs/core/layer.js +1 -1
  63. package/cjs/core/light.d.ts +1 -0
  64. package/cjs/core/light.js +9 -3
  65. package/cjs/core/light.js.map +1 -1
  66. package/cjs/core/stage.d.ts +1 -1
  67. package/cjs/core/stage.js +17 -8
  68. package/cjs/core/stage.js.map +1 -1
  69. package/cjs/core/window.js +1 -1
  70. package/cjs/factory.d.ts +5 -0
  71. package/cjs/factory.js +17 -0
  72. package/cjs/factory.js.map +1 -0
  73. package/cjs/graphic/arc.d.ts +1 -2
  74. package/cjs/graphic/arc.js +0 -3
  75. package/cjs/graphic/arc.js.map +1 -1
  76. package/cjs/graphic/area.d.ts +1 -2
  77. package/cjs/graphic/area.js +0 -3
  78. package/cjs/graphic/area.js.map +1 -1
  79. package/cjs/graphic/builtin-symbol/utils.js +1 -5
  80. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  81. package/cjs/graphic/circle.d.ts +1 -2
  82. package/cjs/graphic/circle.js +0 -3
  83. package/cjs/graphic/circle.js.map +1 -1
  84. package/cjs/graphic/glyph.d.ts +1 -2
  85. package/cjs/graphic/glyph.js +0 -3
  86. package/cjs/graphic/glyph.js.map +1 -1
  87. package/cjs/graphic/graphic-service/graphic-service.d.ts +2 -8
  88. package/cjs/graphic/graphic-service/graphic-service.js +11 -101
  89. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  90. package/cjs/graphic/graphic.d.ts +1 -4
  91. package/cjs/graphic/graphic.js +0 -3
  92. package/cjs/graphic/graphic.js.map +1 -1
  93. package/cjs/graphic/group.d.ts +1 -2
  94. package/cjs/graphic/group.js +0 -3
  95. package/cjs/graphic/group.js.map +1 -1
  96. package/cjs/graphic/image.d.ts +1 -2
  97. package/cjs/graphic/image.js +0 -3
  98. package/cjs/graphic/image.js.map +1 -1
  99. package/cjs/graphic/index.js.map +1 -1
  100. package/cjs/graphic/line.d.ts +1 -2
  101. package/cjs/graphic/line.js +0 -3
  102. package/cjs/graphic/line.js.map +1 -1
  103. package/cjs/graphic/path.d.ts +1 -2
  104. package/cjs/graphic/path.js +0 -3
  105. package/cjs/graphic/path.js.map +1 -1
  106. package/cjs/graphic/polygon.d.ts +1 -2
  107. package/cjs/graphic/polygon.js +0 -3
  108. package/cjs/graphic/polygon.js.map +1 -1
  109. package/cjs/graphic/rect.d.ts +1 -2
  110. package/cjs/graphic/rect.js +0 -3
  111. package/cjs/graphic/rect.js.map +1 -1
  112. package/cjs/graphic/richtext/utils.js +12 -21
  113. package/cjs/graphic/richtext/utils.js.map +1 -1
  114. package/cjs/graphic/richtext.d.ts +1 -2
  115. package/cjs/graphic/richtext.js +0 -3
  116. package/cjs/graphic/richtext.js.map +1 -1
  117. package/cjs/graphic/symbol.d.ts +0 -2
  118. package/cjs/graphic/symbol.js +0 -3
  119. package/cjs/graphic/symbol.js.map +1 -1
  120. package/cjs/graphic/text.d.ts +1 -2
  121. package/cjs/graphic/text.js +1 -4
  122. package/cjs/graphic/text.js.map +1 -1
  123. package/cjs/index.d.ts +4 -1
  124. package/cjs/index.js +16 -15
  125. package/cjs/index.js.map +1 -1
  126. package/cjs/interface/graphic.d.ts +1 -2
  127. package/cjs/interface/graphic.js.map +1 -1
  128. package/cjs/picker/pick-interceptor.d.ts +1 -1
  129. package/cjs/picker/pick-interceptor.js +2 -42
  130. package/cjs/picker/pick-interceptor.js.map +1 -1
  131. package/cjs/picker/picker-service.js +7 -7
  132. package/cjs/picker/picker-service.js.map +1 -1
  133. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +2 -2
  134. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  135. package/cjs/plugins/builtin-plugin/html-attribute-plugin.d.ts +1 -0
  136. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +11 -5
  137. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  138. package/cjs/plugins/builtin-plugin/react-attribute-plugin.d.ts +1 -0
  139. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +8 -2
  140. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  141. package/cjs/render/contributions/render/arc-render.js +1 -4
  142. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  143. package/cjs/render/contributions/render/area-render.js +4 -32
  144. package/cjs/render/contributions/render/area-render.js.map +1 -1
  145. package/cjs/render/contributions/render/base-3d-render.d.ts +10 -0
  146. package/cjs/render/contributions/render/base-3d-render.js +63 -0
  147. package/cjs/render/contributions/render/base-3d-render.js.map +1 -0
  148. package/cjs/render/contributions/render/base-render.js +5 -5
  149. package/cjs/render/contributions/render/base-render.js.map +1 -1
  150. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +14 -30
  151. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  152. package/cjs/render/contributions/render/contributions/base-contribution-render.js +2 -2
  153. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  154. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +11 -22
  155. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  156. package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -2
  157. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  158. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -24
  159. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  160. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +10 -21
  161. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  162. package/cjs/render/contributions/render/contributions/text-contribution-render.js +2 -2
  163. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  164. package/cjs/render/contributions/render/draw-contribution.js +4 -4
  165. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  166. package/cjs/render/contributions/render/draw-interceptor.js +7 -51
  167. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  168. package/cjs/render/contributions/render/group-render.js +6 -6
  169. package/cjs/render/contributions/render/group-render.js.map +1 -1
  170. package/cjs/render/contributions/render/incremental-draw-contribution.js +4 -4
  171. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  172. package/cjs/render/contributions/render/line-render.js.map +1 -1
  173. package/cjs/render/contributions/render/pyramid3d-render.d.ts +3 -5
  174. package/cjs/render/contributions/render/pyramid3d-render.js +4 -54
  175. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  176. package/cjs/render/contributions/render/rect3d-render.d.ts +3 -5
  177. package/cjs/render/contributions/render/rect3d-render.js +4 -53
  178. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  179. package/cjs/render/contributions/render/symbol-render.js +9 -18
  180. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  181. package/cjs/render/contributions/render/text-render.d.ts +3 -2
  182. package/cjs/render/contributions/render/text-render.js +13 -32
  183. package/cjs/render/contributions/render/text-render.js.map +1 -1
  184. package/cjs/render/contributions/render/utils.js +2 -5
  185. package/cjs/render/contributions/render/utils.js.map +1 -1
  186. package/dist/index.es.js +11316 -11831
  187. package/es/allocator/bounds-allocate.js.map +1 -1
  188. package/es/allocator/matrix-allocate.d.ts +1 -1
  189. package/es/allocator/matrix-allocate.js +3 -3
  190. package/es/allocator/matrix-allocate.js.map +1 -1
  191. package/es/animate/config.js +2 -1
  192. package/es/animate/custom-animate.d.ts +0 -14
  193. package/es/animate/custom-animate.js +1 -56
  194. package/es/animate/custom-animate.js.map +1 -1
  195. package/es/animate/group-fade.d.ts +16 -0
  196. package/es/animate/group-fade.js +56 -0
  197. package/es/animate/group-fade.js.map +1 -0
  198. package/es/animate/index.d.ts +1 -0
  199. package/es/animate/index.js +2 -0
  200. package/es/animate/index.js.map +1 -1
  201. package/es/canvas/util.d.ts +0 -1
  202. package/es/canvas/util.js +7 -17
  203. package/es/canvas/util.js.map +1 -1
  204. package/es/common/3d-interceptor.d.ts +3 -0
  205. package/es/common/3d-interceptor.js +47 -0
  206. package/es/common/3d-interceptor.js.map +1 -0
  207. package/es/common/Reflect-metadata.js +2 -1
  208. package/es/common/bounds-context.js +1 -2
  209. package/es/common/canvas-utils.d.ts +1 -1
  210. package/es/common/canvas-utils.js +15 -30
  211. package/es/common/canvas-utils.js.map +1 -1
  212. package/es/common/matrix.d.ts +11 -3
  213. package/es/common/matrix.js +90 -17
  214. package/es/common/matrix.js.map +1 -1
  215. package/es/common/morphing-utils.js +1 -1
  216. package/es/common/path-svg.js +1 -1
  217. package/es/common/polygon.js +1 -1
  218. package/es/common/rect-utils.js +1 -1
  219. package/es/common/render-area.js +1 -1
  220. package/es/common/render-command-list.js +1 -1
  221. package/es/common/render-curve.js +24 -33
  222. package/es/common/render-curve.js.map +1 -1
  223. package/es/common/render-utils.js +1 -1
  224. package/es/common/seg-context.js +1 -1
  225. package/es/common/seg-context.js.map +1 -1
  226. package/es/common/segment/index.d.ts +2 -4
  227. package/es/common/segment/index.js.map +1 -1
  228. package/es/common/simplify.js +1 -1
  229. package/es/common/sort.js +16 -13
  230. package/es/common/sort.js.map +1 -1
  231. package/es/common/split-path.js +1 -1
  232. package/es/common/store.js +1 -1
  233. package/es/common/text.d.ts +0 -2
  234. package/es/common/text.js +1 -7
  235. package/es/common/text.js.map +1 -1
  236. package/es/core/application.js +1 -2
  237. package/es/core/camera.d.ts +1 -0
  238. package/es/core/camera.js +12 -4
  239. package/es/core/camera.js.map +1 -1
  240. package/es/core/constants.js +1 -1
  241. package/es/core/core-modules.js +1 -1
  242. package/es/core/global-module.js +0 -2
  243. package/es/core/global.js +1 -1
  244. package/es/core/graphic-utils.js +1 -1
  245. package/es/core/graphic-utils.js.map +1 -1
  246. package/es/core/index.js +1 -1
  247. package/es/core/layer-service.js +1 -1
  248. package/es/core/layer.js +1 -1
  249. package/es/core/light.d.ts +1 -0
  250. package/es/core/light.js +7 -1
  251. package/es/core/light.js.map +1 -1
  252. package/es/core/stage.d.ts +1 -1
  253. package/es/core/stage.js +18 -13
  254. package/es/core/stage.js.map +1 -1
  255. package/es/core/window.js +1 -1
  256. package/es/factory.d.ts +5 -0
  257. package/es/factory.js +11 -0
  258. package/es/factory.js.map +1 -0
  259. package/es/graphic/arc.d.ts +1 -2
  260. package/es/graphic/arc.js +0 -3
  261. package/es/graphic/arc.js.map +1 -1
  262. package/es/graphic/area.d.ts +1 -2
  263. package/es/graphic/area.js +0 -3
  264. package/es/graphic/area.js.map +1 -1
  265. package/es/graphic/builtin-symbol/utils.js +1 -4
  266. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  267. package/es/graphic/circle.d.ts +1 -2
  268. package/es/graphic/circle.js +0 -3
  269. package/es/graphic/circle.js.map +1 -1
  270. package/es/graphic/glyph.d.ts +1 -2
  271. package/es/graphic/glyph.js +0 -3
  272. package/es/graphic/glyph.js.map +1 -1
  273. package/es/graphic/graphic-service/graphic-service.d.ts +2 -8
  274. package/es/graphic/graphic-service/graphic-service.js +3 -91
  275. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  276. package/es/graphic/graphic.d.ts +1 -4
  277. package/es/graphic/graphic.js +0 -3
  278. package/es/graphic/graphic.js.map +1 -1
  279. package/es/graphic/group.d.ts +1 -2
  280. package/es/graphic/group.js +0 -3
  281. package/es/graphic/group.js.map +1 -1
  282. package/es/graphic/image.d.ts +1 -2
  283. package/es/graphic/image.js +0 -3
  284. package/es/graphic/image.js.map +1 -1
  285. package/es/graphic/index.js.map +1 -1
  286. package/es/graphic/line.d.ts +1 -2
  287. package/es/graphic/line.js +0 -3
  288. package/es/graphic/line.js.map +1 -1
  289. package/es/graphic/path.d.ts +1 -2
  290. package/es/graphic/path.js +0 -3
  291. package/es/graphic/path.js.map +1 -1
  292. package/es/graphic/polygon.d.ts +1 -2
  293. package/es/graphic/polygon.js +0 -3
  294. package/es/graphic/polygon.js.map +1 -1
  295. package/es/graphic/rect.d.ts +1 -2
  296. package/es/graphic/rect.js +0 -3
  297. package/es/graphic/rect.js.map +1 -1
  298. package/es/graphic/richtext/utils.js +9 -20
  299. package/es/graphic/richtext/utils.js.map +1 -1
  300. package/es/graphic/richtext.d.ts +1 -2
  301. package/es/graphic/richtext.js +0 -3
  302. package/es/graphic/richtext.js.map +1 -1
  303. package/es/graphic/symbol.d.ts +0 -2
  304. package/es/graphic/symbol.js +0 -3
  305. package/es/graphic/symbol.js.map +1 -1
  306. package/es/graphic/text.d.ts +1 -2
  307. package/es/graphic/text.js +2 -5
  308. package/es/graphic/text.js.map +1 -1
  309. package/es/index.d.ts +4 -1
  310. package/es/index.js +8 -2
  311. package/es/index.js.map +1 -1
  312. package/es/interface/graphic.d.ts +1 -2
  313. package/es/interface/graphic.js.map +1 -1
  314. package/es/picker/pick-interceptor.d.ts +1 -1
  315. package/es/picker/pick-interceptor.js +4 -44
  316. package/es/picker/pick-interceptor.js.map +1 -1
  317. package/es/picker/picker-service.js +5 -1
  318. package/es/picker/picker-service.js.map +1 -1
  319. package/es/plugins/builtin-plugin/flex-layout-plugin.js +1 -1
  320. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  321. package/es/plugins/builtin-plugin/html-attribute-plugin.d.ts +1 -0
  322. package/es/plugins/builtin-plugin/html-attribute-plugin.js +9 -1
  323. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  324. package/es/plugins/builtin-plugin/react-attribute-plugin.d.ts +1 -0
  325. package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -0
  326. package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  327. package/es/render/contributions/render/arc-render.js +1 -4
  328. package/es/render/contributions/render/arc-render.js.map +1 -1
  329. package/es/render/contributions/render/area-render.js +1 -30
  330. package/es/render/contributions/render/area-render.js.map +1 -1
  331. package/es/render/contributions/render/base-3d-render.d.ts +10 -0
  332. package/es/render/contributions/render/base-3d-render.js +57 -0
  333. package/es/render/contributions/render/base-3d-render.js.map +1 -0
  334. package/es/render/contributions/render/base-render.js +3 -1
  335. package/es/render/contributions/render/base-render.js.map +1 -1
  336. package/es/render/contributions/render/contributions/arc-contribution-render.js +13 -28
  337. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  338. package/es/render/contributions/render/contributions/base-contribution-render.js +1 -1
  339. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  340. package/es/render/contributions/render/contributions/circle-contribution-render.js +10 -20
  341. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  342. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -1
  343. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  344. package/es/render/contributions/render/contributions/rect-contribution-render.js +10 -20
  345. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  346. package/es/render/contributions/render/contributions/symbol-contribution-render.js +9 -19
  347. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  348. package/es/render/contributions/render/contributions/text-contribution-render.js +1 -1
  349. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  350. package/es/render/contributions/render/draw-contribution.js +1 -1
  351. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  352. package/es/render/contributions/render/draw-interceptor.js +7 -49
  353. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  354. package/es/render/contributions/render/group-render.js +5 -1
  355. package/es/render/contributions/render/group-render.js.map +1 -1
  356. package/es/render/contributions/render/incremental-draw-contribution.js +1 -1
  357. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  358. package/es/render/contributions/render/line-render.js.map +1 -1
  359. package/es/render/contributions/render/pyramid3d-render.d.ts +3 -5
  360. package/es/render/contributions/render/pyramid3d-render.js +4 -56
  361. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  362. package/es/render/contributions/render/rect3d-render.d.ts +3 -5
  363. package/es/render/contributions/render/rect3d-render.js +4 -55
  364. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  365. package/es/render/contributions/render/symbol-render.js +9 -18
  366. package/es/render/contributions/render/symbol-render.js.map +1 -1
  367. package/es/render/contributions/render/text-render.d.ts +3 -2
  368. package/es/render/contributions/render/text-render.js +11 -30
  369. package/es/render/contributions/render/text-render.js.map +1 -1
  370. package/es/render/contributions/render/utils.js +2 -5
  371. package/es/render/contributions/render/utils.js.map +1 -1
  372. package/package.json +4 -4
  373. package/cjs/allocator/allocator-modules.d.ts +0 -1
  374. package/cjs/allocator/allocator-modules.js +0 -1
  375. package/cjs/allocator/allocator-modules.js.map +0 -1
  376. package/cjs/allocator/point-allocate.d.ts +0 -1
  377. package/cjs/allocator/point-allocate.js +0 -1
  378. package/cjs/allocator/point-allocate.js.map +0 -1
  379. package/cjs/graphic/graphic-service/arc-contribution.d.ts +0 -1
  380. package/cjs/graphic/graphic-service/arc-contribution.js +0 -3
  381. package/cjs/graphic/graphic-service/arc-contribution.js.map +0 -1
  382. package/cjs/graphic/graphic-service/area-contribution.d.ts +0 -1
  383. package/cjs/graphic/graphic-service/area-contribution.js +0 -3
  384. package/cjs/graphic/graphic-service/area-contribution.js.map +0 -1
  385. package/cjs/graphic/graphic-service/circle-contribution.d.ts +0 -1
  386. package/cjs/graphic/graphic-service/circle-contribution.js +0 -3
  387. package/cjs/graphic/graphic-service/circle-contribution.js.map +0 -1
  388. package/cjs/graphic/graphic-service/default-theme.d.ts +0 -1
  389. package/cjs/graphic/graphic-service/default-theme.js +0 -3
  390. package/cjs/graphic/graphic-service/default-theme.js.map +0 -1
  391. package/cjs/graphic/graphic-service/path-contribution.d.ts +0 -1
  392. package/cjs/graphic/graphic-service/path-contribution.js +0 -3
  393. package/cjs/graphic/graphic-service/path-contribution.js.map +0 -1
  394. package/cjs/graphic/graphic-service/rect-contribution.d.ts +0 -1
  395. package/cjs/graphic/graphic-service/rect-contribution.js +0 -3
  396. package/cjs/graphic/graphic-service/rect-contribution.js.map +0 -1
  397. package/cjs/interface/util.d.ts +0 -1
  398. package/cjs/interface/util.js +0 -3
  399. package/cjs/interface/util.js.map +0 -1
  400. package/es/allocator/allocator-modules.d.ts +0 -1
  401. package/es/allocator/allocator-modules.js +0 -1
  402. package/es/allocator/allocator-modules.js.map +0 -1
  403. package/es/allocator/point-allocate.d.ts +0 -1
  404. package/es/allocator/point-allocate.js +0 -1
  405. package/es/allocator/point-allocate.js.map +0 -1
  406. package/es/graphic/graphic-service/arc-contribution.d.ts +0 -1
  407. package/es/graphic/graphic-service/arc-contribution.js +0 -3
  408. package/es/graphic/graphic-service/arc-contribution.js.map +0 -1
  409. package/es/graphic/graphic-service/area-contribution.d.ts +0 -1
  410. package/es/graphic/graphic-service/area-contribution.js +0 -3
  411. package/es/graphic/graphic-service/area-contribution.js.map +0 -1
  412. package/es/graphic/graphic-service/circle-contribution.d.ts +0 -1
  413. package/es/graphic/graphic-service/circle-contribution.js +0 -3
  414. package/es/graphic/graphic-service/circle-contribution.js.map +0 -1
  415. package/es/graphic/graphic-service/default-theme.d.ts +0 -1
  416. package/es/graphic/graphic-service/default-theme.js +0 -3
  417. package/es/graphic/graphic-service/default-theme.js.map +0 -1
  418. package/es/graphic/graphic-service/path-contribution.d.ts +0 -1
  419. package/es/graphic/graphic-service/path-contribution.js +0 -3
  420. package/es/graphic/graphic-service/path-contribution.js.map +0 -1
  421. package/es/graphic/graphic-service/rect-contribution.d.ts +0 -1
  422. package/es/graphic/graphic-service/rect-contribution.js +0 -3
  423. package/es/graphic/graphic-service/rect-contribution.js.map +0 -1
  424. package/es/interface/util.d.ts +0 -1
  425. package/es/interface/util.js +0 -3
  426. package/es/interface/util.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/render-curve.ts"],"names":[],"mappings":"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","file":"render-curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { min } from '@visactor/vutils';\nimport type {\n IAreaSegment,\n IClipRangeByDimensionType,\n ICurve,\n IDirection,\n IPath2D,\n ISegment,\n ISegPath2D\n} from '../interface';\nimport { Direction } from './enums';\nimport { drawSegItem } from './render-utils';\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n drawConnect?: boolean; // 是否是绘制connect区域的效果\n mode?: 'none' | 'connect' | 'zero';\n zeroX?: number;\n zeroY?: number;\n }\n) {\n const {\n offsetX = 0,\n offsetY = 0,\n offsetZ = 0,\n mode = 'none',\n drawConnect = false,\n zeroX = 0,\n zeroY = 0\n } = params || {};\n // none的connect不需要draw\n if (drawConnect && mode === 'none') {\n return;\n }\n if (!segPath) {\n return;\n }\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n if (drawConnect) {\n // return;\n let defined0 = true;\n let lastCurve: ICurve<IPoint>;\n curves.forEach((curve, i) => {\n // step的逻辑\n let p0 = curve.p0;\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n return;\n }\n if (lastCurve && lastCurve.originP1 === lastCurve.originP2) {\n p0 = lastCurve.p0;\n }\n if (curve.defined) {\n // 非法变合法需要lineTo,合法变非法需要moveTo,初始非法需要moveTo\n if (!defined0) {\n path.lineTo(p0.x + offsetX, p0.y + offsetY, offsetZ);\n defined0 = !defined0;\n }\n } else {\n // 找到合法的点\n const { originP1, originP2 } = curve;\n let validP: IPointLike;\n if (originP1 && originP1.defined !== false) {\n validP = p0;\n } else if (originP1 && originP2.defined !== false) {\n validP = curve.p3 ?? curve.p1;\n }\n // 合法/(初始)变非法,moveTo\n if (defined0) {\n defined0 = !defined0;\n const x = validP ? validP.x : curve.p0.x;\n const y = validP ? validP.y : curve.p0.y;\n path.moveTo(x + offsetX, y + offsetY, offsetZ);\n } else {\n // 非法变非法/合法,看情况要不要lineTo\n if (validP) {\n // 非法变合法,需要lineTo\n defined0 = !defined0;\n path.lineTo(validP.x + offsetX, validP.y + offsetY, offsetZ);\n }\n }\n }\n\n lastCurve = curve;\n });\n } else {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n }\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: IDirection | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let defined0 = true;\n let lastCurve: ICurve<IPoint> = null;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n if (drawConnect) {\n // step的逻辑\n let p0 = curve.p0;\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n continue;\n }\n if (lastCurve && lastCurve.originP1 === lastCurve.originP2) {\n p0 = lastCurve.p0;\n }\n if (curve.defined) {\n // 非法变合法需要lineTo,合法变非法需要moveTo,初始非法需要moveTo\n if (!defined0) {\n path.lineTo(p0.x + offsetX, p0.y + offsetY, offsetZ);\n defined0 = !defined0;\n }\n } else {\n // 找到合法的点\n const { originP1, originP2 } = curve;\n let validP: IPointLike;\n if (originP1 && originP1.defined !== false) {\n validP = p0;\n } else if (originP1 && originP2.defined !== false) {\n validP = curve.p3 ?? curve.p1;\n }\n // 合法/(初始)变非法,moveTo\n if (defined0) {\n defined0 = !defined0;\n const x = validP ? validP.x : curve.p0.x;\n const y = validP ? validP.y : curve.p0.y;\n path.moveTo(x + offsetX, y + offsetY, offsetZ);\n } else {\n // 非法变非法/合法,看情况要不要lineTo\n if (validP) {\n // 非法变合法,需要lineTo\n defined0 = !defined0;\n path.lineTo(validP.x + offsetX, validP.y + offsetY, offsetZ);\n }\n }\n }\n\n lastCurve = curve;\n } else {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const { points } = segments;\n // 分段\n const definedPointsList: IPointLike[][] = [];\n let lastIdx = 0;\n for (let i = 0; i < points.length; i++) {\n if (points[i].defined === false) {\n if (lastIdx + 1 !== i) {\n definedPointsList.slice(lastIdx, i);\n }\n lastIdx = i;\n }\n }\n definedPointsList.length === 0;\n definedPointsList.push(points);\n definedPointsList.forEach((points, i) => {\n const startP = lastSeg && i === 0 ? lastSeg.points[lastSeg.points.length - 1] : points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n // 绘制上层\n points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n // 绘制下层\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.lineTo(startP.x1 ?? startP.x, startP.y1 ?? startP.y);\n path.closePath();\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/common/render-curve.ts"],"names":[],"mappings":"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","file":"render-curve.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { min } from '@visactor/vutils';\nimport type {\n IAreaSegment,\n IClipRangeByDimensionType,\n ICurve,\n IDirection,\n IPath2D,\n ISegment,\n ISegPath2D\n} from '../interface';\nimport { Direction } from './enums';\nimport { drawSegItem } from './render-utils';\n\nfunction drawEachCurve(\n path: IPath2D,\n curve: ICurve<IPoint>,\n lastCurve: ICurve<IPoint>,\n defined0: boolean,\n offsetX: number,\n offsetY: number,\n offsetZ: number\n) {\n let p0 = curve.p0;\n let newDefined0 = defined0;\n\n if (lastCurve && lastCurve.originP1 === lastCurve.originP2) {\n p0 = lastCurve.p0;\n }\n if (curve.defined) {\n // 非法变合法需要lineTo,合法变非法需要moveTo,初始非法需要moveTo\n if (!defined0) {\n path.lineTo(p0.x + offsetX, p0.y + offsetY, offsetZ);\n newDefined0 = !defined0;\n }\n } else {\n // 找到合法的点\n const { originP1, originP2 } = curve;\n let validP: IPointLike;\n if (originP1 && originP1.defined !== false) {\n validP = p0;\n } else if (originP1 && originP2.defined !== false) {\n validP = curve.p3 ?? curve.p1;\n }\n // 合法/(初始)变非法,moveTo\n if (defined0) {\n newDefined0 = !defined0;\n const x = validP ? validP.x : curve.p0.x;\n const y = validP ? validP.y : curve.p0.y;\n path.moveTo(x + offsetX, y + offsetY, offsetZ);\n } else {\n // 非法变非法/合法,看情况要不要lineTo\n if (validP) {\n // 非法变合法,需要lineTo\n newDefined0 = !defined0;\n path.lineTo(validP.x + offsetX, validP.y + offsetY, offsetZ);\n }\n }\n }\n\n return newDefined0;\n}\n\n/**\n * 绘制连续的线段\n * 绘制长度为总长度percent的path,drawDirection为绘制的方向,也就是percent的方向\n * @param path\n * @param segPath\n * @param percent\n * @param drawDirection 绘制的方向,用于使用percent绘制\n * @param line 用于获取line相关属性\n */\nexport function drawSegments(\n path: IPath2D,\n segPath: ISegPath2D,\n percent: number,\n clipRangeByDimension: IClipRangeByDimensionType,\n params?: {\n offsetX?: number;\n offsetY?: number;\n offsetZ?: number;\n drawConnect?: boolean; // 是否是绘制connect区域的效果\n mode?: 'none' | 'connect' | 'zero';\n zeroX?: number;\n zeroY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0, offsetZ = 0, mode = 'none', drawConnect = false } = params || {};\n // none的connect不需要draw\n if (drawConnect && mode === 'none') {\n return;\n }\n if (!segPath) {\n return;\n }\n let needMoveTo: boolean = true;\n const { curves } = segPath;\n if (percent >= 1) {\n if (drawConnect) {\n // return;\n let defined0 = true;\n let lastCurve: ICurve<IPoint>;\n curves.forEach((curve, i) => {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n return;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n });\n } else {\n curves.forEach(curve => {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n return;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, 1, params);\n needMoveTo = false;\n });\n }\n\n return;\n }\n if (percent <= 0) {\n return;\n }\n\n let direction: IDirection | undefined;\n\n if (clipRangeByDimension === 'x') {\n direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n direction = segPath.direction;\n }\n\n // 整个线段的总长度\n const totalLength = segPath.tryUpdateLength(direction);\n // 总需要绘制的长度\n const totalDrawLength = percent * totalLength;\n // 直到上次绘制的长度\n let drawedLengthUntilLast = 0;\n let defined0 = true;\n let lastCurve: ICurve<IPoint> = null;\n for (let i = 0, n = curves.length; i < n; i++) {\n const curve = curves[i];\n const curCurveLength = curve.getLength(direction);\n const _p = (totalDrawLength - drawedLengthUntilLast) / curCurveLength;\n drawedLengthUntilLast += curCurveLength;\n if (_p < 0) {\n break;\n }\n\n if (drawConnect) {\n // step的逻辑\n if (curve.originP1 === curve.originP2) {\n lastCurve = curve;\n continue;\n }\n defined0 = drawEachCurve(path, curve, lastCurve, defined0, offsetX, offsetY, offsetZ);\n\n lastCurve = curve;\n } else {\n // 跳过这个点\n if (!curve.defined) {\n needMoveTo = true;\n continue;\n }\n if (needMoveTo) {\n path.moveTo(curve.p0.x + offsetX, curve.p0.y + offsetY, offsetZ);\n }\n drawSegItem(path, curve, min(_p, 1), params);\n needMoveTo = false;\n }\n }\n}\n\nexport function drawIncrementalSegments(\n path: IPath2D,\n lastSeg: ISegment,\n segments: ISegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const startP = lastSeg ? lastSeg.points[lastSeg.points.length - 1] : segments.points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n segments.points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n}\n\nexport function drawIncrementalAreaSegments(\n path: IPath2D,\n lastSeg: IAreaSegment,\n segments: IAreaSegment,\n params?: {\n offsetX?: number;\n offsetY?: number;\n }\n) {\n const { offsetX = 0, offsetY = 0 } = params || {};\n const { points } = segments;\n // 分段\n const definedPointsList: IPointLike[][] = [];\n let lastIdx = 0;\n for (let i = 0; i < points.length; i++) {\n if (points[i].defined === false) {\n if (lastIdx + 1 !== i) {\n definedPointsList.slice(lastIdx, i);\n }\n lastIdx = i;\n }\n }\n definedPointsList.length === 0;\n definedPointsList.push(points);\n definedPointsList.forEach((points, i) => {\n const startP = lastSeg && i === 0 ? lastSeg.points[lastSeg.points.length - 1] : points[0];\n path.moveTo(startP.x + offsetX, startP.y + offsetY);\n // 绘制上层\n points.forEach(p => {\n if (p.defined === false) {\n path.moveTo(p.x + offsetX, p.y + offsetY);\n return;\n }\n path.lineTo(p.x + offsetX, p.y + offsetY);\n });\n // 绘制下层\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n path.lineTo(p.x1 ?? p.x, p.y1 ?? p.y);\n }\n path.lineTo(startP.x1 ?? startP.x, startP.y1 ?? startP.y);\n path.closePath();\n });\n}\n"]}
@@ -19,4 +19,4 @@ function drawSegItem(ctx, curve, endPercent, params) {
19
19
  }
20
20
 
21
21
  exports.drawSegItem = drawSegItem;
22
- //# sourceMappingURL=render-utils.js.map
22
+ //# sourceMappingURL=render-utils.js.map
@@ -95,4 +95,4 @@ class ReflectSegContext extends SegContext {
95
95
  }
96
96
 
97
97
  exports.ReflectSegContext = ReflectSegContext;
98
- //# sourceMappingURL=seg-context.js.map
98
+ //# sourceMappingURL=seg-context.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/seg-context.ts"],"names":[],"mappings":"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","file":"seg-context.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, Point } from '@visactor/vutils';\nimport type { ICubicBezierCurve, ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { CubicBezierCurve } from './segment/curve/cubic-bezier';\nimport { LineCurve } from './segment/curve/line';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n private _lastOriginP?: IPointLike;\n private _startOriginP?: IPointLike;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: IDirection;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: IDirection) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: IDirection) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): 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 curve.originP1 = this._lastOriginP;\n curve.originP2 = p;\n curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined, this._startOriginP);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n const curve = this.addLinearCurve(x, y, defined, this._lastOriginP, p);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n this._lastOriginP = p;\n this._startOriginP = p;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: IDirection): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean, p1: IPointLike, p2: IPointLike): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.originP1 = p1;\n curve.originP2 = p2;\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: IDirection): number {\n if (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 const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.y - endP.y);\n } else if (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 const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.x - endP.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined, p);\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n return super.lineTo(y, x, defined, p);\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n return super.moveTo(y, x, p);\n }\n clear() {\n return super.clear();\n }\n}\n\n// export class ReflectContextWrap implements IPath {\n// ctx: IPath;\n// constructor(path: IPath) {\n// this.ctx = path;\n// }\n\n// // @ts-ignore\n// arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void {\n// return this.ctx.arc(y, x, radius, startAngle, endAngle, counterclockwise);\n// }\n// // @ts-ignore\n// arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n// return this.ctx.arcTo(y1, x1, y2, x2, radius);\n// }\n// // @ts-ignore\n// bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n// return this.ctx.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x);\n// }\n// closePath(): void {\n// return this.ctx.closePath();\n// }\n// // @ts-ignore\n// ellipse(\n// x: number,\n// y: number,\n// radiusX: number,\n// radiusY: number,\n// rotation: number,\n// startAngle: number,\n// endAngle: number,\n// counterclockwise?: boolean\n// ): void {\n// return this.ctx.ellipse(y, x, radiusY, radiusX, rotation, startAngle, endAngle, counterclockwise);\n// }\n// lineTo(x: number, y: number): void {\n// return this.ctx.lineTo(y, x);\n// }\n// moveTo(x: number, y: number): void {\n// return this.ctx.moveTo(y, x);\n// }\n// // @ts-ignore\n// quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n// return this.ctx.quadraticCurveTo(cpy, cpx, y, x);\n// }\n// // @ts-ignore\n// rect(x: number, y: number, w: number, h: number): void {\n// return this.rect(y, x, w, h);\n// }\n// }\n"]}
1
+ {"version":3,"sources":["../src/common/seg-context.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAE9C,mCAAoC;AACpC,+DAAgE;AAChE,+CAAiD;AAsBjD,MAAa,UAAU;IAQrB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAOD,YAAY,SAAqB,EAAE,SAAqB;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,SAAqB,EAAE,SAAqB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,aAAa,CACX,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,CAAS,EACT,CAAS,EACT,OAAgB,EAChB,CAAa;QAEb,MAAM,KAAK,GAAsB,IAAI,+BAAgB,CACnD,IAAI,cAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACnC,IAAI,cAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACrB,IAAI,cAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACrB,IAAI,cAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAChB,CAAC;QACF,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,SAAS;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,OAAO;SACR;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,OAAgB,EAAE,CAAa;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAa;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,CAAS,EAAE,CAAS;QAC7D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,eAAe,CAAC,SAAsB;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAGS,cAAc,CAAC,CAAS,EAAE,CAAS,EAAE,OAAgB,EAAE,EAAc,EAAE,EAAc;QAC7F,MAAM,KAAK,GAAG,IAAI,gBAAS,CAAC,IAAI,cAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,cAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,SAAS,CAAC,SAAsB;;QAC9B,IAAI,SAAS,KAAK,iBAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,OAAO,CAAC,CAAC;aACV;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAA,EAAE,CAAC,EAAE,mCAAI,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAA,YAAG,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9B;aAAM,IAAI,SAAS,KAAK,iBAAS,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,OAAO,CAAC,CAAC;aACV;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAA,EAAE,CAAC,EAAE,mCAAI,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAA,YAAG,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9B;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,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AArID,gCAqIC;AAKD,MAAa,iBAAkB,SAAQ,UAAU;IAE/C,aAAa,CACX,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,CAAS,EACT,CAAS,EACT,OAAgB,EAChB,CAAa;QAEb,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,OAAgB,EAAE,CAAa;QAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAa;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK;QACH,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAvBD,8CAuBC","file":"seg-context.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, Point } from '@visactor/vutils';\nimport type { ICubicBezierCurve, ICurve, ICurveType, IDirection, ILineCurve, ISegPath2D } from '../interface';\nimport { Direction } from './enums';\nimport { CubicBezierCurve } from './segment/curve/cubic-bezier';\nimport { LineCurve } from './segment/curve/line';\n\n/**\n * 部分逻辑参考d3-shape:https://github.com/d3/d3-shape/blob/8ec82658454750cfa29efb1e0ea514e3dd9b2297/src/curve/monotone.js\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n/**\n * 缓存segment的context\n */\nexport class SegContext implements ISegPath2D {\n private _lastX: number;\n private _lastY: number;\n private _startX: number;\n private _startY: number;\n private _lastOriginP?: IPointLike;\n private _startOriginP?: IPointLike;\n\n get endX(): number {\n return this._lastX;\n }\n get endY(): number {\n return this._lastY;\n }\n\n curves: ICurve<IPoint>[];\n direction: IDirection;\n curveType: ICurveType;\n length: number;\n\n constructor(curveType: ICurveType, direction: IDirection) {\n this.init(curveType, direction);\n }\n\n init(curveType: ICurveType, direction: IDirection) {\n this._lastX = this._lastY = this._startX = this._startY = 0;\n this.curveType = curveType;\n this.direction = direction;\n this.curves = [];\n }\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): 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 curve.originP1 = this._lastOriginP;\n curve.originP2 = p;\n curve.defined = defined;\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n closePath(): void {\n if (this.curves.length < 2) {\n return;\n }\n const lastCurve = this.curves[this.curves.length - 1];\n this.lineTo(this._startX, this._startY, lastCurve.defined, this._startOriginP);\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('SegContext不支持调用ellipse');\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n const curve = this.addLinearCurve(x, y, defined, this._lastOriginP, p);\n this.curves.push(curve);\n this._lastX = x;\n this._lastY = y;\n this._lastOriginP = p;\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n this._lastX = this._startX = x;\n this._lastY = this._startY = y;\n this._lastOriginP = p;\n this._startOriginP = p;\n return this;\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n throw new Error('SegContext不支持调用quadraticCurveTo');\n }\n\n clear() {\n this.curves = [];\n this.length = NaN;\n }\n\n tryUpdateLength(direction?: IDirection): number {\n return this.getLength(direction);\n }\n\n // linear\n protected addLinearCurve(x: number, y: number, defined: boolean, p1: IPointLike, p2: IPointLike): ILineCurve {\n const curve = new LineCurve(new Point(this._lastX, this._lastY), new Point(x, y));\n curve.originP1 = p1;\n curve.originP2 = p2;\n curve.defined = defined;\n return curve;\n }\n\n getPointAt(t: number): IPoint {\n throw new Error('暂未实现');\n }\n getCurveLengths(): number[] {\n return [];\n }\n getLength(direction?: IDirection): number {\n if (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 const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.y - endP.y);\n } else if (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 const endP = ec.p3 ?? ec.p1;\n return abs(sc.p0.x - endP.x);\n }\n if (Number.isFinite(this.length)) {\n return this.length;\n }\n this.length = this.curves.reduce((l, c) => l + c.getLength(), 0);\n return this.length;\n }\n}\n\n/**\n * 用于monotoneY等类型的segment\n */\nexport class ReflectSegContext extends SegContext {\n // @ts-ignore\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number,\n defined: boolean,\n p: IPointLike\n ): void {\n return super.bezierCurveTo(cp1y, cp1x, cp2y, cp2x, y, x, defined, p);\n }\n lineTo(x: number, y: number, defined: boolean, p: IPointLike): void {\n return super.lineTo(y, x, defined, p);\n }\n moveTo(x: number, y: number, p: IPointLike): ISegPath2D {\n return super.moveTo(y, x, p);\n }\n clear() {\n return super.clear();\n }\n}\n"]}
@@ -1,11 +1,9 @@
1
1
  import type { IPointLike } from '@visactor/vutils';
2
- import type { ICurveType, ISegPath2D } from '../../interface';
2
+ import type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';
3
3
  export * from './linear';
4
4
  export * from './linear-closed';
5
5
  export * from './basis';
6
6
  export * from './monotone';
7
7
  export * from './step';
8
8
  export * from './curve/curve-context';
9
- export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: {
10
- startPoint: IPointLike;
11
- }): ISegPath2D | null;
9
+ export declare function calcLineCache(points: IPointLike[], curveType: ICurveType, params?: IGenSegmentParams): ISegPath2D | null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAE1D,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAAmC;IAEnC,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AAzBD,sCAyBC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: { startPoint: IPointLike }\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qCAA6C;AAC7C,mCAA2C;AAC3C,yCAAwE;AACxE,iCAAyC;AACzC,mDAA0D;AAE1D,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AACvB,wDAAsC;AAEtC,SAAgB,aAAa,CAC3B,MAAoB,EACpB,SAAqB,EACrB,MAA0B;IAE1B,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,wBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,WAAW;YACd,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,cAAc;YACjB,OAAO,IAAA,uCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,OAAO,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AACH,CAAC;AAzBD,sCAyBC","file":"index.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICurveType, IGenSegmentParams, ISegPath2D } from '../../interface';\nimport { genLinearSegments } from './linear';\nimport { genBasisSegments } from './basis';\nimport { genMonotoneXSegments, genMonotoneYSegments } from './monotone';\nimport { genStepSegments } from './step';\nimport { genLinearClosedSegments } from './linear-closed';\n\nexport * from './linear';\nexport * from './linear-closed';\nexport * from './basis';\nexport * from './monotone';\nexport * from './step';\nexport * from './curve/curve-context';\n\nexport function calcLineCache(\n points: IPointLike[],\n curveType: ICurveType,\n params?: IGenSegmentParams\n): ISegPath2D | null {\n switch (curveType) {\n case 'linear':\n return genLinearSegments(points, params);\n case 'basis':\n return genBasisSegments(points, params);\n case 'monotoneX':\n return genMonotoneXSegments(points, params);\n case 'monotoneY':\n return genMonotoneYSegments(points, params);\n case 'step':\n return genStepSegments(points, 0.5, params);\n case 'stepBefore':\n return genStepSegments(points, 0, params);\n case 'stepAfter':\n return genStepSegments(points, 1, params);\n case 'linearClosed':\n return genLinearClosedSegments(points, params);\n default:\n return genLinearSegments(points, params);\n }\n}\n"]}
@@ -37,4 +37,4 @@ function flatten_simplify(points, tolerance, highestQuality) {
37
37
  Object.defineProperty(exports, "__esModule", {
38
38
  value: !0
39
39
  }), exports.flatten_simplify = void 0, exports.flatten_simplify = flatten_simplify;
40
- //# sourceMappingURL=simplify.js.map
40
+ //# sourceMappingURL=simplify.js.map
@@ -26,8 +26,18 @@ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, gener
26
26
  }));
27
27
  };
28
28
 
29
- function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
29
+ function parseChildMap(graphic, defaultZIndex, reverse) {
30
30
  const childMap = {}, zIdxArray = [];
31
+ return graphic.forEachChildren((item => {
32
+ const {zIndex: zIndex = defaultZIndex} = item.attribute;
33
+ childMap[zIndex] ? childMap[zIndex].push(item) : (childMap[zIndex] = [ item ], zIdxArray.push(zIndex));
34
+ }), reverse), zIdxArray.sort(((a, b) => reverse ? b - a : a - b)), {
35
+ childMap: childMap,
36
+ zIdxArray: zIdxArray
37
+ };
38
+ }
39
+
40
+ function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
31
41
  let needSort = !1;
32
42
  if (sort3d) needSort = !0; else {
33
43
  let lastZIndex;
@@ -39,13 +49,10 @@ function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
39
49
  }), reverse);
40
50
  }
41
51
  if (needSort) {
42
- graphic.forEachChildren((item => {
43
- const {zIndex: zIndex = defaultZIndex} = item.attribute;
44
- childMap[zIndex] ? childMap[zIndex].push(item) : (childMap[zIndex] = [ item ], zIdxArray.push(zIndex));
45
- }), reverse), zIdxArray.sort(((a, b) => reverse ? b - a : a - b));
52
+ const {childMap: childMap, zIdxArray: zIdxArray} = parseChildMap(graphic, defaultZIndex, reverse);
46
53
  let skip = !1;
47
54
  for (let i = 0; i < zIdxArray.length && !skip; i++) {
48
- const idx = zIdxArray[i], children = childMap[idx];
55
+ const children = childMap[zIdxArray[i]];
49
56
  sort3d && children.sort(((a, b) => {
50
57
  var _a, _b;
51
58
  return (reverse ? -1 : 1) * ((null !== (_a = b.attribute.z) && void 0 !== _a ? _a : 0) - (null !== (_b = a.attribute.z) && void 0 !== _b ? _b : 0));
@@ -65,7 +72,6 @@ function foreachAsync(graphic, defaultZIndex, cb, reverse = !1) {
65
72
  }
66
73
 
67
74
  function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
68
- const childMap = {}, zIdxArray = [];
69
75
  let needSort = !1;
70
76
  graphic.forEachChildren(((item, i) => {
71
77
  const {zIndex: zIndex = defaultZIndex} = item.attribute;
@@ -74,13 +80,10 @@ function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
74
80
  }), reverse);
75
81
  let result = null, next = !1;
76
82
  if (needSort) {
77
- graphic.forEachChildren((item => {
78
- const {zIndex: zIndex = defaultZIndex} = item.attribute;
79
- childMap[zIndex] ? childMap[zIndex].push(item) : (childMap[zIndex] = [ item ], zIdxArray.push(zIndex));
80
- }), reverse), zIdxArray.sort(((a, b) => reverse ? b - a : a - b));
83
+ const {childMap: childMap, zIdxArray: zIdxArray} = parseChildMap(graphic, defaultZIndex, reverse);
81
84
  let skip = !1;
82
85
  for (let i = 0; i < zIdxArray.length && !skip; i++) {
83
- const idx = zIdxArray[i], children = childMap[idx];
86
+ const children = childMap[zIdxArray[i]];
84
87
  for (let i = 0; i < children.length; i++) {
85
88
  if (next) {
86
89
  skip = !0, result = children[i];
@@ -98,4 +101,4 @@ Object.defineProperty(exports, "__esModule", {
98
101
  value: !0
99
102
  }), exports.findNextGraphic = exports.foreachAsync = exports.foreach = void 0, exports.foreach = foreach,
100
103
  exports.foreachAsync = foreachAsync, exports.findNextGraphic = findNextGraphic;
101
- //# sourceMappingURL=sort.js.map
104
+ //# sourceMappingURL=sort.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/sort.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,SAAgB,OAAO,CACrB,OAAiB,EACjB,aAAqB,EACrB,EAAoC,EACpC,UAAmB,KAAK,EACxB,SAAkB,KAAK;IAEvB,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,EAAE;QACV,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,IAAI,UAAkB,CAAC;QACvB,OAAO,CAAC,eAAe,CAAC,CAAC,IAAc,EAAE,CAAS,EAAE,EAAE;YACpD,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,EAAE;gBACX,UAAU,GAAG,MAAM,CAAC;aACrB;iBAAM,IAAI,UAAU,KAAK,MAAM,EAAE;gBAChC,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,OAAO,CAAC,CAAC;KACb;IACD,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,eAAe,CAAC,CAAC,IAAc,EAAE,EAAE;YACzC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAClD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACpB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxB;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,IAAI,EAAE;gBACR,MAAM;aACP;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,MAAM,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;oBACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAA,CAAC,CAAC,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC;gBAC5E,CAAC,CAAC,CAAC;aACJ;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBACtB,IAAI,GAAG,IAAI,CAAC;oBACZ,MAAM;iBACP;aACF;SACF;KACF;SAAM;QACL,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;KACtC;AACH,CAAC;AA5DD,0BA4DC;AAED,SAAsB,YAAY,CAChC,OAAiB,EACjB,aAAqB,EACrB,EAAsE,EACtE,UAAmB,KAAK;;QAGxB,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAgDlD,CAAC;CAAA;AAvDD,oCAuDC;AAED,SAAgB,eAAe,CAAC,OAAiB,EAAE,EAAU,EAAE,aAAqB,EAAE,UAAmB,KAAK;IAC5G,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAkB,CAAC;IACvB,OAAO,CAAC,eAAe,CAAC,CAAC,IAAc,EAAE,CAAS,EAAE,EAAE;QACpD,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,UAAU,KAAK,MAAM,CAAC;SACvB;aAAM,IAAI,UAAU,KAAK,MAAM,EAAE;YAChC,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,OAAO,CAAC,CAAC;IACZ,IAAI,MAAM,GAAoB,IAAI,CAAC;IACnC,IAAI,IAAI,GAAY,KAAK,CAAC;IAC1B,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,eAAe,CAAC,CAAC,IAAc,EAAE,EAAE;YACzC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAClD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACpB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxB;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,IAAI,EAAE;gBACR,MAAM;aACP;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,IAAI,EAAE;oBACR,IAAI,GAAG,IAAI,CAAC;oBACZ,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrB,MAAM;iBACP;gBACD,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE;oBAC3B,IAAI,GAAG,IAAI,CAAC;oBACZ,SAAS;iBACV;aACF;SACF;KACF;SAAM;QACL,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,IAAI,EAAE;gBACR,MAAM,GAAG,IAAgB,CAAC;gBAC1B,OAAO,IAAI,CAAC;aACb;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,OAAO,CAAC,CAAC;KACb;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA9DD,0CA8DC","file":"sort.js","sourcesContent":["import type { IGraphic } from '../interface';\n\nexport function foreach(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (...data: any) => boolean | void,\n reverse: boolean = false,\n sort3d: boolean = false\n) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n if (sort3d) {\n needSort = true;\n } else {\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex = zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n }\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n // 根据z进行排序\n if (sort3d) {\n children.sort((a, b) => {\n return (reverse ? -1 : 1) * ((b.attribute.z ?? 0) - (a.attribute.z ?? 0));\n });\n }\n for (let i = 0; i < children.length; i++) {\n if (cb(children[i], i)) {\n skip = true;\n break;\n }\n }\n }\n } else {\n graphic.forEachChildren(cb, reverse);\n }\n}\n\nexport async function foreachAsync(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (data: any, i: number) => boolean | void | Promise<boolean | void>,\n reverse: boolean = false\n) {\n // 不支持zIndex\n await graphic.forEachChildrenAsync(cb, reverse);\n // const childMap: { [id: number]: IGraphic[] } = {};\n // const zIdxArray: number[] = [];\n // // 遍历一遍查看是否有zIndex不同的\n // let needSort = false;\n // let lastZIndex: number;\n // graphic.forEachChildren((item: IGraphic, i: number) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (i === 0) {\n // lastZIndex === zIndex;\n // } else if (lastZIndex !== zIndex) {\n // needSort = true;\n // return true;\n // }\n // return false;\n // }, reverse);\n // if (needSort) {\n // graphic.forEachChildren((item: IGraphic) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (childMap[zIndex]) {\n // childMap[zIndex].push(item);\n // } else {\n // childMap[zIndex] = [item];\n // zIdxArray.push(zIndex);\n // }\n // }, reverse);\n // zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n // let skip = false;\n // for (let i = 0; i < zIdxArray.length; i++) {\n // if (skip) {\n // break;\n // }\n // const idx = zIdxArray[i];\n // const children = childMap[idx];\n // for (let i = 0; i < children.length; i++) {\n // let d = cb(children[i], i);\n // if ((d as any).then) {\n // d = await d;\n // }\n // if (d) {\n // skip = true;\n // break;\n // }\n // }\n // }\n // } else {\n // await graphic.forEachChildrenAsync(cb, reverse);\n // }\n}\n\nexport function findNextGraphic(graphic: IGraphic, id: number, defaultZIndex: number, reverse: boolean = false) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex === zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n let result: IGraphic | null = null;\n let next: boolean = false;\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n for (let i = 0; i < children.length; i++) {\n if (next) {\n skip = true;\n result = children[i];\n break;\n }\n if (children[i]._uid === id) {\n next = true;\n continue;\n }\n }\n }\n } else {\n graphic.forEachChildren(item => {\n if (next) {\n result = item as IGraphic;\n return true;\n }\n if (item._uid === id) {\n next = true;\n }\n return false;\n }, reverse);\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/sort.ts"],"names":[],"mappings":"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","file":"sort.js","sourcesContent":["import type { IGraphic } from '../interface';\n\nfunction parseChildMap(graphic: IGraphic, defaultZIndex: number, reverse: boolean) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n\n return { childMap, zIdxArray };\n}\n\nexport function foreach(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (...data: any) => boolean | void,\n reverse: boolean = false,\n sort3d: boolean = false\n) {\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n if (sort3d) {\n needSort = true;\n } else {\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex = zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n }\n if (needSort) {\n const { childMap, zIdxArray } = parseChildMap(graphic, defaultZIndex, reverse);\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n // 根据z进行排序\n if (sort3d) {\n children.sort((a, b) => {\n return (reverse ? -1 : 1) * ((b.attribute.z ?? 0) - (a.attribute.z ?? 0));\n });\n }\n for (let i = 0; i < children.length; i++) {\n if (cb(children[i], i)) {\n skip = true;\n break;\n }\n }\n }\n } else {\n graphic.forEachChildren(cb, reverse);\n }\n}\n\nexport async function foreachAsync(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (data: any, i: number) => boolean | void | Promise<boolean | void>,\n reverse: boolean = false\n) {\n // 不支持zIndex\n await graphic.forEachChildrenAsync(cb, reverse);\n // const childMap: { [id: number]: IGraphic[] } = {};\n // const zIdxArray: number[] = [];\n // // 遍历一遍查看是否有zIndex不同的\n // let needSort = false;\n // let lastZIndex: number;\n // graphic.forEachChildren((item: IGraphic, i: number) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (i === 0) {\n // lastZIndex === zIndex;\n // } else if (lastZIndex !== zIndex) {\n // needSort = true;\n // return true;\n // }\n // return false;\n // }, reverse);\n // if (needSort) {\n // graphic.forEachChildren((item: IGraphic) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (childMap[zIndex]) {\n // childMap[zIndex].push(item);\n // } else {\n // childMap[zIndex] = [item];\n // zIdxArray.push(zIndex);\n // }\n // }, reverse);\n // zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n // let skip = false;\n // for (let i = 0; i < zIdxArray.length; i++) {\n // if (skip) {\n // break;\n // }\n // const idx = zIdxArray[i];\n // const children = childMap[idx];\n // for (let i = 0; i < children.length; i++) {\n // let d = cb(children[i], i);\n // if ((d as any).then) {\n // d = await d;\n // }\n // if (d) {\n // skip = true;\n // break;\n // }\n // }\n // }\n // } else {\n // await graphic.forEachChildrenAsync(cb, reverse);\n // }\n}\n\nexport function findNextGraphic(graphic: IGraphic, id: number, defaultZIndex: number, reverse: boolean = false) {\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex === zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n let result: IGraphic | null = null;\n let next: boolean = false;\n if (needSort) {\n const { childMap, zIdxArray } = parseChildMap(graphic, defaultZIndex, reverse);\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n for (let i = 0; i < children.length; i++) {\n if (next) {\n skip = true;\n result = children[i];\n break;\n }\n if (children[i]._uid === id) {\n next = true;\n continue;\n }\n }\n }\n } else {\n graphic.forEachChildren(item => {\n if (next) {\n result = item as IGraphic;\n return true;\n }\n if (item._uid === id) {\n next = true;\n }\n return false;\n }, reverse);\n }\n\n return result;\n}\n"]}
@@ -269,4 +269,4 @@ const splitPath = (path, count) => {
269
269
  };
270
270
 
271
271
  exports.splitPath = splitPath;
272
- //# sourceMappingURL=split-path.js.map
272
+ //# sourceMappingURL=split-path.js.map
@@ -1,2 +1,2 @@
1
1
  class StageStore {}
2
- //# sourceMappingURL=store.js.map
2
+ //# sourceMappingURL=store.js.map
@@ -1,6 +1,4 @@
1
- import { type ITextFontParams } from '@visactor/vutils';
2
1
  import type { ITextGraphicAttribute, TextAlignType, TextBaselineType } from '../interface';
3
- export declare function getContextFont(text: Partial<ITextFontParams>, defaultAttr?: Partial<ITextFontParams>, fontSizeScale?: number): string;
4
2
  export declare function textDrawOffsetY(baseline: TextBaselineType, h: number): number;
5
3
  export declare function textDrawOffsetX(textAlign: TextAlignType, width: number): number;
6
4
  export declare function textLayoutOffsetY(baseline: TextBaselineType, lineHeight: number, fontSize: number, buf?: number): number;
@@ -2,16 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.textAttributesToStyle = exports.textLayoutOffsetY = exports.textDrawOffsetX = exports.textDrawOffsetY = exports.getContextFont = void 0;
5
+ }), exports.textAttributesToStyle = exports.textLayoutOffsetY = exports.textDrawOffsetX = exports.textDrawOffsetY = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils");
8
8
 
9
- function getContextFont(text, defaultAttr = {}, fontSizeScale) {
10
- fontSizeScale || (fontSizeScale = 1);
11
- const {fontStyle: fontStyle = defaultAttr.fontStyle, fontVariant: fontVariant = defaultAttr.fontVariant, fontWeight: fontWeight = defaultAttr.fontWeight, fontSize: fontSize = defaultAttr.fontSize, fontFamily: fontFamily = defaultAttr.fontFamily} = text;
12
- return (fontStyle ? fontStyle + " " : "") + (fontVariant ? fontVariant + " " : "") + (fontWeight ? fontWeight + " " : "") + fontSize * fontSizeScale + "px " + (fontFamily || "sans-serif");
13
- }
14
-
15
9
  function textDrawOffsetY(baseline, h) {
16
10
  return "top" === baseline ? Math.ceil(.79 * h) : "middle" === baseline ? Math.round(.3 * h) : "bottom" === baseline ? Math.round(-.21 * h) : 0;
17
11
  }
@@ -37,7 +31,6 @@ function textAttributesToStyle(attrs) {
37
31
  style;
38
32
  }
39
33
 
40
- exports.getContextFont = getContextFont, exports.textDrawOffsetY = textDrawOffsetY,
41
- exports.textDrawOffsetX = textDrawOffsetX, exports.textLayoutOffsetY = textLayoutOffsetY,
42
- exports.textAttributesToStyle = textAttributesToStyle;
43
- //# sourceMappingURL=text.js.map
34
+ exports.textDrawOffsetY = textDrawOffsetY, exports.textDrawOffsetX = textDrawOffsetX,
35
+ exports.textLayoutOffsetY = textLayoutOffsetY, exports.textAttributesToStyle = textAttributesToStyle;
36
+ //# sourceMappingURL=text.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, type ITextFontParams, lowerCamelCaseToMiddle } from '@visactor/vutils';\nimport type { ITextGraphicAttribute, TextAlignType, TextBaselineType } from '../interface';\n\nexport function getContextFont(\n text: Partial<ITextFontParams>,\n defaultAttr: Partial<ITextFontParams> = {},\n fontSizeScale?: number\n): string {\n if (!fontSizeScale) {\n fontSizeScale = 1;\n }\n const {\n fontStyle = defaultAttr.fontStyle,\n fontVariant = defaultAttr.fontVariant,\n fontWeight = defaultAttr.fontWeight,\n fontSize = defaultAttr.fontSize,\n fontFamily = defaultAttr.fontFamily\n } = text;\n return (\n '' +\n (fontStyle ? fontStyle + ' ' : '') +\n (fontVariant ? fontVariant + ' ' : '') +\n (fontWeight ? fontWeight + ' ' : '') +\n fontSize * fontSizeScale +\n 'px ' +\n (fontFamily ? fontFamily : 'sans-serif')\n );\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\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] = /^[0-9]*$/.test(`${attrs[key]}`) ? `${attrs[key]}px` : `${attrs[key]}`;\n }\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, 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\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] = /^[0-9]*$/.test(`${attrs[key]}`) ? `${attrs[key]}px` : `${attrs[key]}`;\n }\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"]}
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.ApplicationContribution = void 0, exports.ApplicationContribution = Symbol("ApplicationContribution");
6
- //# sourceMappingURL=application.js.map
5
+ }), exports.ApplicationContribution = void 0, exports.ApplicationContribution = Symbol("ApplicationContribution");
@@ -17,3 +17,4 @@ export declare class OrthoCamera implements ICamera {
17
17
  view(x: number, y: number, z: number): [number, number, number];
18
18
  vp(x: number, y: number, z: number): IPointLike;
19
19
  }
20
+ export declare const registerOrthoCamera: () => void;
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.OrthoCamera = void 0;
5
+ }), exports.registerOrthoCamera = exports.OrthoCamera = void 0;
6
6
 
7
- const matrix_allocate_1 = require("../allocator/matrix-allocate"), matrix_1 = require("../common/matrix");
7
+ const matrix_allocate_1 = require("../allocator/matrix-allocate"), matrix_1 = require("../common/matrix"), factory_1 = require("../factory"), matrix_2 = require("../common/matrix");
8
8
 
9
9
  class OrthoCamera {
10
10
  set params(params) {
@@ -25,7 +25,7 @@ class OrthoCamera {
25
25
  this._viewMatrixCached || (this._viewMatrixCached = matrix_allocate_1.mat4Allocate.allocate());
26
26
  const {pos: pos, center: center, up: up} = this.params.viewParams;
27
27
  return (0, matrix_1.lookAt)(this._viewMatrixCached, pos, center, up), this._vp || (this._vp = matrix_allocate_1.mat4Allocate.allocate()),
28
- this._vp = (0, matrix_1.multiply)(this._vp, this.getProjectionMatrix(), this.getViewMatrix()),
28
+ this._vp = (0, matrix_2.multiplyMat4Mat4)(this._vp, this.getProjectionMatrix(), this.getViewMatrix()),
29
29
  this._viewMatrixCached;
30
30
  }
31
31
  getProjectionMatrix() {
@@ -37,7 +37,7 @@ class OrthoCamera {
37
37
  const {left: left, top: top, right: right, bottom: bottom} = this._params;
38
38
  return (0, matrix_1.ortho)(this._projectionMatrixCached, left, right, bottom, top, 0, -2e6),
39
39
  this._vp || (this._vp = matrix_allocate_1.mat4Allocate.allocate()), this._vp = (0,
40
- matrix_1.multiply)(this._vp, this.getProjectionMatrix(), this.getViewMatrix()),
40
+ matrix_2.multiplyMat4Mat4)(this._vp, this.getProjectionMatrix(), this.getViewMatrix()),
41
41
  this._projectionMatrixCached;
42
42
  }
43
43
  getField() {
@@ -65,4 +65,10 @@ class OrthoCamera {
65
65
  }
66
66
 
67
67
  exports.OrthoCamera = OrthoCamera;
68
- //# sourceMappingURL=camera.js.map
68
+
69
+ const registerOrthoCamera = () => {
70
+ factory_1.Factory.registerPlugin("OrthoCamera", OrthoCamera);
71
+ };
72
+
73
+ exports.registerOrthoCamera = registerOrthoCamera;
74
+ //# sourceMappingURL=camera.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":"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","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { epsilon, IPoint } from '@visactor/vutils';\nimport { DefaultMat4Allocate } from '../allocator/matrix-allocate';\nimport type { ICamera, mat4, OrthoParameters, vec3 } from '../interface';\nimport { mat4Allocate } from '../allocator/matrix-allocate';\nimport { lookAt, multiply, ortho, transformMat4 } from '../common/matrix';\n\n/**\n * 部分代码参考 https://github.com/toji/gl-matrix\n * Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// /**\n// * 代码来自gl-matrix https://github.com/toji/gl-matrix\n// * Generates a matrix that makes something look at something else.\n// *\n// * @param {mat4} out mat4 frustum matrix will be written into\n// * @param {ReadonlyVec3} eye Position of the viewer\n// * @param {ReadonlyVec3} center Point the viewer is looking at\n// * @param {ReadonlyVec3} up vec3 pointing up\n// * @returns {mat4} out\n// */\n\n// function targetTo(out: mat4, eye: vec3, target: vec3, up: vec3) {\n// const eyex = eye[0];\n// const eyey = eye[1];\n// const eyez = eye[2];\n// const upx = up[0];\n// const upy = up[1];\n// const upz = up[2];\n// let z0 = eyex - target[0];\n// let z1 = eyey - target[1];\n// let z2 = eyez - target[2];\n// let len = z0 * z0 + z1 * z1 + z2 * z2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// z0 *= len;\n// z1 *= len;\n// z2 *= len;\n// }\n\n// let x0 = upy * z2 - upz * z1;\n// let x1 = upz * z0 - upx * z2;\n// let x2 = upx * z1 - upy * z0;\n// len = x0 * x0 + x1 * x1 + x2 * x2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// x0 *= len;\n// x1 *= len;\n// x2 *= len;\n// }\n\n// out[0] = x0;\n// out[1] = x1;\n// out[2] = x2;\n// out[3] = 0;\n// out[4] = z1 * x2 - z2 * x1;\n// out[5] = z2 * x0 - z0 * x2;\n// out[6] = z0 * x1 - z1 * x0;\n// out[7] = 0;\n// out[8] = z0;\n// out[9] = z1;\n// out[10] = z2;\n// out[11] = 0;\n// out[12] = eyex;\n// out[13] = eyey;\n// out[14] = eyez;\n// out[15] = 1;\n// return out;\n// }\n\n/**\n * 正交投影摄像机\n */\nexport class OrthoCamera implements ICamera {\n private _params: OrthoParameters;\n\n /* cache */\n private _projectionMatrixCached: mat4;\n private _viewMatrixCached: mat4;\n private _vp: mat4;\n\n set params(params: OrthoParameters) {\n this._params = { ...params };\n this._projectionMatrixCached = this.forceGetProjectionMatrix();\n this._viewMatrixCached = this.forceGetViewMatrix();\n }\n get params(): OrthoParameters {\n return { ...this._params };\n }\n\n constructor(params: OrthoParameters) {\n this.params = params;\n }\n\n /**\n * 获取视图矩阵\n */\n getViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n return this._viewMatrixCached;\n }\n forceGetViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n const { pos, center, up } = this.params.viewParams;\n lookAt(this._viewMatrixCached, pos, center, up);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._viewMatrixCached;\n }\n\n /**\n * 获取projection矩阵\n */\n getProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n return this._projectionMatrixCached;\n }\n forceGetProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n const { left, top, right, bottom } = this._params;\n // 从0到2000000的Z轴范围,小于0的会被裁剪\n ortho(this._projectionMatrixCached, left, right, bottom, top, 0.0, -2000000.0);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiply(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._projectionMatrixCached;\n }\n\n getField() {\n const { fieldRatio = 0.8, fieldDepth, left, right } = this._params;\n return (fieldDepth ?? right - left) * fieldRatio;\n }\n\n getProjectionScale(z: number): number {\n const field = this.getField();\n return field / (field + z);\n }\n\n view(x: number, y: number, z: number): [number, number, number] {\n const outP: vec3 = [0, 0, 0];\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n return outP;\n }\n\n // 部分参考:https://www.mamboleoo.be/articles/how-to-render-3d-in-2d-canvas\n vp(x: number, y: number, z: number): IPointLike {\n const outP: vec3 = [0, 0, 0];\n const { pos } = this._params.viewParams;\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n x = outP[0];\n y = outP[1];\n z = outP[2];\n\n const sizeProjection = this.getProjectionScale(z);\n const xProject = x * sizeProjection + pos[0];\n const yProject = y * sizeProjection + pos[1];\n return {\n x: xProject,\n y: yProject\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/camera.ts"],"names":[],"mappings":";;;AAEA,kEAA4D;AAC5D,6CAAgE;AAChE,wCAAqC;AACrC,6CAAoD;AAyFpD,MAAa,WAAW;IAQtB,IAAI,MAAM,CAAC,MAAuB;QAChC,IAAI,CAAC,OAAO,qBAAQ,MAAM,CAAE,CAAC;QAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,MAAM;QACR,yBAAY,IAAI,CAAC,OAAO,EAAG;IAC7B,CAAC;IAED,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAKD,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,iBAAiB,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,iBAAiB,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SAClD;QACD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,IAAA,eAAM,EAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,GAAG,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SACpC;QACD,IAAI,CAAC,GAAG,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAKD,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,IAAI,CAAC,uBAAuB,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SACxD;QACD,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IACD,wBAAwB;QACtB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,IAAI,CAAC,uBAAuB,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SACxD;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAElD,IAAA,cAAK,EAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAE/E,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,GAAG,GAAG,8BAAY,CAAC,QAAQ,EAAE,CAAC;SACpC;QACD,IAAI,CAAC,GAAG,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,UAAU,GAAG,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACnE,OAAO,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,KAAK,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IACnD,CAAC;IAED,kBAAkB,CAAC,CAAS;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAClC,MAAM,IAAI,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAA,sBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAChC,MAAM,IAAI,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACxC,IAAA,sBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;YACL,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,QAAQ;SACZ,CAAC;IACJ,CAAC;CACF;AArGD,kCAqGC;AAEM,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,iBAAO,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","file":"camera.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ICamera, mat4, OrthoParameters, vec3 } from '../interface';\nimport { mat4Allocate } from '../allocator/matrix-allocate';\nimport { lookAt, ortho, transformMat4 } from '../common/matrix';\nimport { Factory } from '../factory';\nimport { multiplyMat4Mat4 } from '../common/matrix';\n\n/**\n * 部分代码参考 https://github.com/toji/gl-matrix\n * Copyright (c) 2015-2021, Brandon Jones, Colin MacKenzie IV.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// /**\n// * 代码来自gl-matrix https://github.com/toji/gl-matrix\n// * Generates a matrix that makes something look at something else.\n// *\n// * @param {mat4} out mat4 frustum matrix will be written into\n// * @param {ReadonlyVec3} eye Position of the viewer\n// * @param {ReadonlyVec3} center Point the viewer is looking at\n// * @param {ReadonlyVec3} up vec3 pointing up\n// * @returns {mat4} out\n// */\n\n// function targetTo(out: mat4, eye: vec3, target: vec3, up: vec3) {\n// const eyex = eye[0];\n// const eyey = eye[1];\n// const eyez = eye[2];\n// const upx = up[0];\n// const upy = up[1];\n// const upz = up[2];\n// let z0 = eyex - target[0];\n// let z1 = eyey - target[1];\n// let z2 = eyez - target[2];\n// let len = z0 * z0 + z1 * z1 + z2 * z2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// z0 *= len;\n// z1 *= len;\n// z2 *= len;\n// }\n\n// let x0 = upy * z2 - upz * z1;\n// let x1 = upz * z0 - upx * z2;\n// let x2 = upx * z1 - upy * z0;\n// len = x0 * x0 + x1 * x1 + x2 * x2;\n\n// if (len > 0) {\n// len = 1 / Math.sqrt(len);\n// x0 *= len;\n// x1 *= len;\n// x2 *= len;\n// }\n\n// out[0] = x0;\n// out[1] = x1;\n// out[2] = x2;\n// out[3] = 0;\n// out[4] = z1 * x2 - z2 * x1;\n// out[5] = z2 * x0 - z0 * x2;\n// out[6] = z0 * x1 - z1 * x0;\n// out[7] = 0;\n// out[8] = z0;\n// out[9] = z1;\n// out[10] = z2;\n// out[11] = 0;\n// out[12] = eyex;\n// out[13] = eyey;\n// out[14] = eyez;\n// out[15] = 1;\n// return out;\n// }\n\n/**\n * 正交投影摄像机\n */\nexport class OrthoCamera implements ICamera {\n private _params: OrthoParameters;\n\n /* cache */\n private _projectionMatrixCached: mat4;\n private _viewMatrixCached: mat4;\n private _vp: mat4;\n\n set params(params: OrthoParameters) {\n this._params = { ...params };\n this._projectionMatrixCached = this.forceGetProjectionMatrix();\n this._viewMatrixCached = this.forceGetViewMatrix();\n }\n get params(): OrthoParameters {\n return { ...this._params };\n }\n\n constructor(params: OrthoParameters) {\n this.params = params;\n }\n\n /**\n * 获取视图矩阵\n */\n getViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n return this._viewMatrixCached;\n }\n forceGetViewMatrix(): mat4 {\n if (!this._viewMatrixCached) {\n this._viewMatrixCached = mat4Allocate.allocate();\n }\n const { pos, center, up } = this.params.viewParams;\n lookAt(this._viewMatrixCached, pos, center, up);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiplyMat4Mat4(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._viewMatrixCached;\n }\n\n /**\n * 获取projection矩阵\n */\n getProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n return this._projectionMatrixCached;\n }\n forceGetProjectionMatrix(): mat4 {\n if (!this._projectionMatrixCached) {\n this._projectionMatrixCached = mat4Allocate.allocate();\n }\n const { left, top, right, bottom } = this._params;\n // 从0到2000000的Z轴范围,小于0的会被裁剪\n ortho(this._projectionMatrixCached, left, right, bottom, top, 0.0, -2000000.0);\n\n if (!this._vp) {\n this._vp = mat4Allocate.allocate();\n }\n this._vp = multiplyMat4Mat4(this._vp, this.getProjectionMatrix(), this.getViewMatrix());\n return this._projectionMatrixCached;\n }\n\n getField() {\n const { fieldRatio = 0.8, fieldDepth, left, right } = this._params;\n return (fieldDepth ?? right - left) * fieldRatio;\n }\n\n getProjectionScale(z: number): number {\n const field = this.getField();\n return field / (field + z);\n }\n\n view(x: number, y: number, z: number): [number, number, number] {\n const outP: vec3 = [0, 0, 0];\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n return outP;\n }\n\n // 部分参考:https://www.mamboleoo.be/articles/how-to-render-3d-in-2d-canvas\n vp(x: number, y: number, z: number): IPointLike {\n const outP: vec3 = [0, 0, 0];\n const { pos } = this._params.viewParams;\n transformMat4(outP, [x, y, z], this._viewMatrixCached);\n x = outP[0];\n y = outP[1];\n z = outP[2];\n\n const sizeProjection = this.getProjectionScale(z);\n const xProject = x * sizeProjection + pos[0];\n const yProject = y * sizeProjection + pos[1];\n return {\n x: xProject,\n y: yProject\n };\n }\n}\n\nexport const registerOrthoCamera = () => {\n Factory.registerPlugin('OrthoCamera', OrthoCamera);\n};\n"]}
@@ -7,4 +7,4 @@ exports.TransformUtil = Symbol.for("TransformUtil"), exports.GraphicUtil = Symbo
7
7
  exports.LayerService = Symbol.for("LayerService"), exports.StaticLayerHandlerContribution = Symbol.for("StaticLayerHandlerContribution"),
8
8
  exports.DynamicLayerHandlerContribution = Symbol.for("DynamicLayerHandlerContribution"),
9
9
  exports.VirtualLayerHandlerContribution = Symbol.for("VirtualLayerHandlerContribution");
10
- //# sourceMappingURL=constants.js.map
10
+ //# sourceMappingURL=constants.js.map
@@ -12,4 +12,4 @@ exports.default = new inversify_lite_1.ContainerModule((bind => {
12
12
  bind(constants_1.TransformUtil).to(graphic_utils_1.DefaultTransformUtil).inSingletonScope(),
13
13
  bind(constants_1.LayerService).to(layer_service_1.DefaultLayerService).inSingletonScope();
14
14
  }));
15
- //# sourceMappingURL=core-modules.js.map
15
+ //# sourceMappingURL=core-modules.js.map
@@ -1,3 +1 @@
1
-
2
-
3
1
  //# sourceMappingURL=global-module.js.map
@@ -179,4 +179,4 @@ DefaultGlobal = __decorate([ (0, inversify_lite_1.injectable)(), __param(0, (0,
179
179
  inversify_lite_1.inject)(contribution_provider_1.ContributionProvider)), __param(0, (0,
180
180
  inversify_lite_1.named)(constants_1.EnvContribution)), __metadata("design:paramtypes", [ Object ]) ], DefaultGlobal),
181
181
  exports.DefaultGlobal = DefaultGlobal;
182
- //# sourceMappingURL=global.js.map
182
+ //# sourceMappingURL=global.js.map
@@ -172,4 +172,4 @@ let DefaultTransformUtil = class {
172
172
 
173
173
  DefaultTransformUtil = __decorate([ (0, inversify_lite_1.injectable)(), __metadata("design:paramtypes", []) ], DefaultTransformUtil),
174
174
  exports.DefaultTransformUtil = DefaultTransformUtil;
175
- //# sourceMappingURL=graphic-utils.js.map
175
+ //# sourceMappingURL=graphic-utils.js.map