three-stdlib 2.22.5 → 2.22.7

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 (1091) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +0 -2
  3. package/package.json +34 -14
  4. package/BufferGeometryUtils-903f7ecb.js +0 -1
  5. package/BufferGeometryUtils-f2288d1c.js +0 -740
  6. package/Nodes-2106b101.js +0 -352
  7. package/Nodes-8947ba9a.js +0 -1
  8. package/_polyfill/CompressedArrayTexture.cjs.js +0 -1
  9. package/_polyfill/CompressedArrayTexture.js +0 -13
  10. package/_polyfill/Data3DTexture.cjs.js +0 -1
  11. package/_polyfill/Data3DTexture.js +0 -23
  12. package/animation/AnimationClipCreator.cjs.js +0 -1
  13. package/animation/AnimationClipCreator.d.ts +0 -12
  14. package/animation/AnimationClipCreator.js +0 -77
  15. package/animation/CCDIKSolver.cjs.js +0 -1
  16. package/animation/CCDIKSolver.d.ts +0 -25
  17. package/animation/CCDIKSolver.js +0 -304
  18. package/animation/MMDAnimationHelper.cjs.js +0 -1
  19. package/animation/MMDAnimationHelper.d.ts +0 -103
  20. package/animation/MMDAnimationHelper.js +0 -705
  21. package/animation/MMDPhysics.cjs.js +0 -1
  22. package/animation/MMDPhysics.d.ts +0 -119
  23. package/animation/MMDPhysics.js +0 -976
  24. package/cameras/CinematicCamera.cjs.js +0 -1
  25. package/cameras/CinematicCamera.d.ts +0 -41
  26. package/cameras/CinematicCamera.js +0 -139
  27. package/controls/ArcballControls.cjs.js +0 -1
  28. package/controls/ArcballControls.d.ts +0 -161
  29. package/controls/ArcballControls.js +0 -2642
  30. package/controls/DeviceOrientationControls.cjs.js +0 -1
  31. package/controls/DeviceOrientationControls.d.ts +0 -24
  32. package/controls/DeviceOrientationControls.js +0 -119
  33. package/controls/DragControls.cjs.js +0 -1
  34. package/controls/DragControls.d.ts +0 -34
  35. package/controls/DragControls.js +0 -274
  36. package/controls/FirstPersonControls.cjs.js +0 -1
  37. package/controls/FirstPersonControls.d.ts +0 -48
  38. package/controls/FirstPersonControls.js +0 -290
  39. package/controls/FlyControls.cjs.js +0 -1
  40. package/controls/FlyControls.d.ts +0 -32
  41. package/controls/FlyControls.js +0 -309
  42. package/controls/OrbitControls.cjs.js +0 -1
  43. package/controls/OrbitControls.d.ts +0 -63
  44. package/controls/OrbitControls.js +0 -980
  45. package/controls/PointerLockControls.cjs.js +0 -1
  46. package/controls/PointerLockControls.d.ts +0 -24
  47. package/controls/PointerLockControls.js +0 -135
  48. package/controls/TrackballControls.cjs.js +0 -1
  49. package/controls/TrackballControls.d.ts +0 -95
  50. package/controls/TrackballControls.js +0 -653
  51. package/controls/TransformControls.cjs.js +0 -1
  52. package/controls/TransformControls.d.ts +0 -151
  53. package/controls/TransformControls.js +0 -1275
  54. package/controls/experimental/CameraControls.cjs.js +0 -1
  55. package/controls/experimental/CameraControls.d.ts +0 -170
  56. package/controls/experimental/CameraControls.js +0 -953
  57. package/csm/CSM.cjs.js +0 -1
  58. package/csm/CSM.d.ts +0 -61
  59. package/csm/CSM.js +0 -305
  60. package/csm/CSMFrustum.cjs.js +0 -1
  61. package/csm/CSMFrustum.d.ts +0 -19
  62. package/csm/CSMFrustum.js +0 -90
  63. package/csm/CSMHelper.cjs.js +0 -1
  64. package/csm/CSMHelper.d.ts +0 -26
  65. package/csm/CSMHelper.js +0 -128
  66. package/csm/CSMShader.cjs.js +0 -1
  67. package/csm/CSMShader.d.ts +0 -4
  68. package/csm/CSMShader.js +0 -255
  69. package/curves/CurveExtras.cjs.js +0 -1
  70. package/curves/CurveExtras.d.ts +0 -68
  71. package/curves/CurveExtras.js +0 -266
  72. package/curves/NURBSCurve.cjs.js +0 -1
  73. package/curves/NURBSCurve.d.ts +0 -11
  74. package/curves/NURBSCurve.js +0 -63
  75. package/curves/NURBSSurface.cjs.js +0 -1
  76. package/curves/NURBSSurface.d.ts +0 -13
  77. package/curves/NURBSSurface.js +0 -44
  78. package/curves/NURBSUtils.cjs.js +0 -1
  79. package/curves/NURBSUtils.d.ts +0 -22
  80. package/curves/NURBSUtils.js +0 -375
  81. package/custom.d.cjs.js +0 -1
  82. package/custom.d.js +0 -1
  83. package/deprecated/Geometry.cjs.js +0 -1
  84. package/deprecated/Geometry.d.ts +0 -342
  85. package/deprecated/Geometry.js +0 -1261
  86. package/effects/AnaglyphEffect.cjs.js +0 -1
  87. package/effects/AnaglyphEffect.d.ts +0 -11
  88. package/effects/AnaglyphEffect.js +0 -85
  89. package/effects/AsciiEffect.cjs.js +0 -1
  90. package/effects/AsciiEffect.d.ts +0 -18
  91. package/effects/AsciiEffect.js +0 -203
  92. package/effects/OutlineEffect.cjs.js +0 -1
  93. package/effects/OutlineEffect.d.ts +0 -28
  94. package/effects/OutlineEffect.js +0 -378
  95. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  96. package/effects/ParallaxBarrierEffect.d.ts +0 -8
  97. package/effects/ParallaxBarrierEffect.js +0 -63
  98. package/effects/PeppersGhostEffect.cjs.js +0 -1
  99. package/effects/PeppersGhostEffect.d.ts +0 -10
  100. package/effects/PeppersGhostEffect.js +0 -134
  101. package/effects/StereoEffect.cjs.js +0 -1
  102. package/effects/StereoEffect.d.ts +0 -9
  103. package/effects/StereoEffect.js +0 -36
  104. package/environments/RoomEnvironment.cjs.js +0 -1
  105. package/environments/RoomEnvironment.d.ts +0 -5
  106. package/environments/RoomEnvironment.js +0 -92
  107. package/exporters/ColladaExporter.cjs.js +0 -1
  108. package/exporters/ColladaExporter.d.ts +0 -39
  109. package/exporters/ColladaExporter.js +0 -425
  110. package/exporters/DRACOExporter.cjs.js +0 -1
  111. package/exporters/DRACOExporter.d.ts +0 -23
  112. package/exporters/DRACOExporter.js +0 -186
  113. package/exporters/GLTFExporter.cjs.js +0 -1
  114. package/exporters/GLTFExporter.d.ts +0 -270
  115. package/exporters/GLTFExporter.js +0 -1932
  116. package/exporters/MMDExporter.cjs.js +0 -1
  117. package/exporters/MMDExporter.d.ts +0 -8
  118. package/exporters/MMDExporter.js +0 -160
  119. package/exporters/OBJExporter.cjs.js +0 -1
  120. package/exporters/OBJExporter.d.ts +0 -18
  121. package/exporters/OBJExporter.js +0 -228
  122. package/exporters/PLYExporter.cjs.js +0 -1
  123. package/exporters/PLYExporter.d.ts +0 -11
  124. package/exporters/PLYExporter.js +0 -339
  125. package/exporters/STLExporter.cjs.js +0 -1
  126. package/exporters/STLExporter.d.ts +0 -23
  127. package/exporters/STLExporter.js +0 -180
  128. package/exporters/USDZExporter.cjs.js +0 -1
  129. package/exporters/USDZExporter.d.ts +0 -27
  130. package/exporters/USDZExporter.js +0 -388
  131. package/geometries/BoxLineGeometry.cjs.js +0 -1
  132. package/geometries/BoxLineGeometry.d.ts +0 -12
  133. package/geometries/BoxLineGeometry.js +0 -52
  134. package/geometries/ConvexGeometry.cjs.js +0 -1
  135. package/geometries/ConvexGeometry.d.ts +0 -5
  136. package/geometries/ConvexGeometry.js +0 -38
  137. package/geometries/DecalGeometry.cjs.js +0 -1
  138. package/geometries/DecalGeometry.d.ts +0 -10
  139. package/geometries/DecalGeometry.js +0 -238
  140. package/geometries/LightningStrike.cjs.js +0 -1
  141. package/geometries/LightningStrike.d.ts +0 -108
  142. package/geometries/LightningStrike.js +0 -740
  143. package/geometries/ParametricGeometries.cjs.js +0 -1
  144. package/geometries/ParametricGeometries.d.ts +0 -32
  145. package/geometries/ParametricGeometries.js +0 -179
  146. package/geometries/ParametricGeometry.cjs.js +0 -1
  147. package/geometries/ParametricGeometry.d.ts +0 -18
  148. package/geometries/ParametricGeometry.js +0 -87
  149. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  150. package/geometries/RoundedBoxGeometry.d.ts +0 -5
  151. package/geometries/RoundedBoxGeometry.js +0 -122
  152. package/geometries/TeapotGeometry.cjs.js +0 -1
  153. package/geometries/TeapotGeometry.d.ts +0 -13
  154. package/geometries/TeapotGeometry.js +0 -297
  155. package/geometries/TextGeometry.cjs.js +0 -1
  156. package/geometries/TextGeometry.d.ts +0 -18
  157. package/geometries/TextGeometry.js +0 -37
  158. package/helpers/LightProbeHelper.cjs.js +0 -1
  159. package/helpers/LightProbeHelper.d.ts +0 -10
  160. package/helpers/LightProbeHelper.js +0 -40
  161. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  162. package/helpers/PositionalAudioHelper.d.ts +0 -13
  163. package/helpers/PositionalAudioHelper.js +0 -75
  164. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  165. package/helpers/RectAreaLightHelper.d.ts +0 -10
  166. package/helpers/RectAreaLightHelper.js +0 -60
  167. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  168. package/helpers/VertexNormalsHelper.d.ts +0 -10
  169. package/helpers/VertexNormalsHelper.js +0 -75
  170. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  171. package/helpers/VertexTangentsHelper.d.ts +0 -10
  172. package/helpers/VertexTangentsHelper.js +0 -63
  173. package/index.cjs.js +0 -1
  174. package/index.d.ts +0 -254
  175. package/index.js +0 -337
  176. package/interactive/HTMLMesh.cjs.js +0 -1
  177. package/interactive/HTMLMesh.d.ts +0 -6
  178. package/interactive/HTMLMesh.js +0 -406
  179. package/interactive/InteractiveGroup.cjs.js +0 -1
  180. package/interactive/InteractiveGroup.d.ts +0 -5
  181. package/interactive/InteractiveGroup.js +0 -87
  182. package/interactive/SelectionBox.cjs.js +0 -1
  183. package/interactive/SelectionBox.d.ts +0 -15
  184. package/interactive/SelectionBox.js +0 -152
  185. package/interactive/SelectionHelper.cjs.js +0 -1
  186. package/interactive/SelectionHelper.d.ts +0 -17
  187. package/interactive/SelectionHelper.js +0 -59
  188. package/libs/MeshoptDecoder.cjs.js +0 -1
  189. package/libs/MeshoptDecoder.d.ts +0 -12
  190. package/libs/MeshoptDecoder.js +0 -124
  191. package/libs/MotionControllers.cjs.js +0 -1
  192. package/libs/MotionControllers.d.ts +0 -132
  193. package/libs/MotionControllers.js +0 -455
  194. package/lights/LightProbeGenerator.cjs.js +0 -1
  195. package/lights/LightProbeGenerator.d.ts +0 -6
  196. package/lights/LightProbeGenerator.js +0 -200
  197. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  198. package/lights/RectAreaLightUniformsLib.d.ts +0 -3
  199. package/lights/RectAreaLightUniformsLib.js +0 -9
  200. package/lines/Line2.cjs.js +0 -1
  201. package/lines/Line2.d.ts +0 -11
  202. package/lines/Line2.js +0 -16
  203. package/lines/LineGeometry.cjs.js +0 -1
  204. package/lines/LineGeometry.d.ts +0 -10
  205. package/lines/LineGeometry.js +0 -56
  206. package/lines/LineMaterial.cjs.js +0 -1
  207. package/lines/LineMaterial.d.ts +0 -31
  208. package/lines/LineMaterial.js +0 -577
  209. package/lines/LineSegments2.cjs.js +0 -1
  210. package/lines/LineSegments2.d.ts +0 -14
  211. package/lines/LineSegments2.js +0 -311
  212. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  213. package/lines/LineSegmentsGeometry.d.ts +0 -23
  214. package/lines/LineSegmentsGeometry.js +0 -166
  215. package/lines/Wireframe.cjs.js +0 -1
  216. package/lines/Wireframe.d.ts +0 -11
  217. package/lines/Wireframe.js +0 -45
  218. package/lines/WireframeGeometry2.cjs.js +0 -1
  219. package/lines/WireframeGeometry2.d.ts +0 -8
  220. package/lines/WireframeGeometry2.js +0 -14
  221. package/loaders/3DMLoader.cjs.js +0 -1
  222. package/loaders/3DMLoader.d.ts +0 -17
  223. package/loaders/3DMLoader.js +0 -1037
  224. package/loaders/3MFLoader.cjs.js +0 -1
  225. package/loaders/3MFLoader.d.ts +0 -16
  226. package/loaders/3MFLoader.js +0 -1053
  227. package/loaders/AMFLoader.cjs.js +0 -1
  228. package/loaders/AMFLoader.d.ts +0 -14
  229. package/loaders/AMFLoader.js +0 -389
  230. package/loaders/AssimpLoader.cjs.js +0 -1
  231. package/loaders/AssimpLoader.js +0 -1793
  232. package/loaders/BVHLoader.cjs.js +0 -1
  233. package/loaders/BVHLoader.d.ts +0 -21
  234. package/loaders/BVHLoader.js +0 -313
  235. package/loaders/BasisTextureLoader.cjs.js +0 -1
  236. package/loaders/BasisTextureLoader.d.ts +0 -32
  237. package/loaders/BasisTextureLoader.js +0 -602
  238. package/loaders/ColladaLoader.cjs.js +0 -1
  239. package/loaders/ColladaLoader.d.ts +0 -20
  240. package/loaders/ColladaLoader.js +0 -2993
  241. package/loaders/DDSLoader.cjs.js +0 -1
  242. package/loaders/DDSLoader.d.ts +0 -16
  243. package/loaders/DDSLoader.js +0 -214
  244. package/loaders/DRACOLoader.cjs.js +0 -1
  245. package/loaders/DRACOLoader.d.ts +0 -18
  246. package/loaders/DRACOLoader.js +0 -447
  247. package/loaders/EXRLoader.cjs.js +0 -1
  248. package/loaders/EXRLoader.d.ts +0 -18
  249. package/loaders/EXRLoader.js +0 -1699
  250. package/loaders/FBXLoader.cjs.js +0 -1
  251. package/loaders/FBXLoader.d.ts +0 -14
  252. package/loaders/FBXLoader.js +0 -2917
  253. package/loaders/FontLoader.cjs.js +0 -1
  254. package/loaders/FontLoader.d.ts +0 -36
  255. package/loaders/FontLoader.js +0 -144
  256. package/loaders/GCodeLoader.cjs.js +0 -1
  257. package/loaders/GCodeLoader.d.ts +0 -15
  258. package/loaders/GCodeLoader.js +0 -189
  259. package/loaders/GLTFLoader.cjs.js +0 -1
  260. package/loaders/GLTFLoader.d.ts +0 -151
  261. package/loaders/GLTFLoader.js +0 -3136
  262. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  263. package/loaders/HDRCubeTextureLoader.d.ts +0 -18
  264. package/loaders/HDRCubeTextureLoader.js +0 -77
  265. package/loaders/KMZLoader.cjs.js +0 -1
  266. package/loaders/KMZLoader.d.ts +0 -16
  267. package/loaders/KMZLoader.js +0 -88
  268. package/loaders/KTX2Loader.cjs.js +0 -1
  269. package/loaders/KTX2Loader.d.ts +0 -16
  270. package/loaders/KTX2Loader.js +0 -596
  271. package/loaders/KTXLoader.cjs.js +0 -1
  272. package/loaders/KTXLoader.d.ts +0 -16
  273. package/loaders/KTXLoader.js +0 -149
  274. package/loaders/LDrawLoader.cjs.js +0 -1
  275. package/loaders/LDrawLoader.d.ts +0 -26
  276. package/loaders/LDrawLoader.js +0 -1842
  277. package/loaders/LUT3dlLoader.cjs.js +0 -1
  278. package/loaders/LUT3dlLoader.d.ts +0 -20
  279. package/loaders/LUT3dlLoader.js +0 -115
  280. package/loaders/LUTCubeLoader.cjs.js +0 -1
  281. package/loaders/LUTCubeLoader.d.ts +0 -23
  282. package/loaders/LUTCubeLoader.js +0 -118
  283. package/loaders/LWOLoader.cjs.js +0 -1
  284. package/loaders/LWOLoader.d.ts +0 -26
  285. package/loaders/LWOLoader.js +0 -737
  286. package/loaders/LottieLoader.cjs.js +0 -1
  287. package/loaders/LottieLoader.d.ts +0 -15
  288. package/loaders/LottieLoader.js +0 -49
  289. package/loaders/MD2Loader.cjs.js +0 -1
  290. package/loaders/MD2Loader.d.ts +0 -14
  291. package/loaders/MD2Loader.js +0 -202
  292. package/loaders/MDDLoader.cjs.js +0 -1
  293. package/loaders/MDDLoader.d.ts +0 -19
  294. package/loaders/MDDLoader.js +0 -78
  295. package/loaders/MMDLoader.cjs.js +0 -1
  296. package/loaders/MMDLoader.d.ts +0 -63
  297. package/loaders/MMDLoader.js +0 -1434
  298. package/loaders/MTLLoader.cjs.js +0 -1
  299. package/loaders/MTLLoader.d.ts +0 -112
  300. package/loaders/MTLLoader.js +0 -390
  301. package/loaders/NRRDLoader.cjs.js +0 -1
  302. package/loaders/NRRDLoader.d.ts +0 -21
  303. package/loaders/NRRDLoader.js +0 -482
  304. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  305. package/loaders/NodeMaterialLoader.js +0 -39
  306. package/loaders/OBJLoader.cjs.js +0 -1
  307. package/loaders/OBJLoader.d.ts +0 -17
  308. package/loaders/OBJLoader.js +0 -609
  309. package/loaders/PCDLoader.cjs.js +0 -1
  310. package/loaders/PCDLoader.d.ts +0 -15
  311. package/loaders/PCDLoader.js +0 -267
  312. package/loaders/PDBLoader.cjs.js +0 -1
  313. package/loaders/PDBLoader.d.ts +0 -22
  314. package/loaders/PDBLoader.js +0 -264
  315. package/loaders/PLYLoader.cjs.js +0 -1
  316. package/loaders/PLYLoader.d.ts +0 -16
  317. package/loaders/PLYLoader.js +0 -414
  318. package/loaders/PRWMLoader.cjs.js +0 -1
  319. package/loaders/PRWMLoader.d.ts +0 -16
  320. package/loaders/PRWMLoader.js +0 -197
  321. package/loaders/PVRLoader.cjs.js +0 -1
  322. package/loaders/PVRLoader.d.ts +0 -16
  323. package/loaders/PVRLoader.js +0 -192
  324. package/loaders/RGBELoader.cjs.js +0 -1
  325. package/loaders/RGBELoader.d.ts +0 -20
  326. package/loaders/RGBELoader.js +0 -382
  327. package/loaders/RGBMLoader.cjs.js +0 -1
  328. package/loaders/RGBMLoader.d.ts +0 -32
  329. package/loaders/RGBMLoader.js +0 -1168
  330. package/loaders/STLLoader.cjs.js +0 -1
  331. package/loaders/STLLoader.d.ts +0 -14
  332. package/loaders/STLLoader.js +0 -296
  333. package/loaders/SVGLoader.cjs.js +0 -1
  334. package/loaders/SVGLoader.d.ts +0 -63
  335. package/loaders/SVGLoader.js +0 -2083
  336. package/loaders/TDSLoader.cjs.js +0 -1
  337. package/loaders/TDSLoader.d.ts +0 -42
  338. package/loaders/TDSLoader.js +0 -870
  339. package/loaders/TGALoader.cjs.js +0 -1
  340. package/loaders/TGALoader.d.ts +0 -14
  341. package/loaders/TGALoader.js +0 -396
  342. package/loaders/TTFLoader.cjs.js +0 -1
  343. package/loaders/TTFLoader.d.ts +0 -15
  344. package/loaders/TTFLoader.js +0 -152
  345. package/loaders/TiltLoader.cjs.js +0 -1
  346. package/loaders/TiltLoader.d.ts +0 -14
  347. package/loaders/TiltLoader.js +0 -411
  348. package/loaders/VOXLoader.cjs.js +0 -1
  349. package/loaders/VOXLoader.d.ts +0 -28
  350. package/loaders/VOXLoader.js +0 -196
  351. package/loaders/VRMLLoader.cjs.js +0 -1
  352. package/loaders/VRMLLoader.d.ts +0 -14
  353. package/loaders/VRMLLoader.js +0 -2575
  354. package/loaders/VRMLoader.cjs.js +0 -1
  355. package/loaders/VRMLoader.js +0 -46
  356. package/loaders/VTKLoader.cjs.js +0 -1
  357. package/loaders/VTKLoader.d.ts +0 -14
  358. package/loaders/VTKLoader.js +0 -834
  359. package/loaders/XLoader.cjs.js +0 -1
  360. package/loaders/XLoader.js +0 -1434
  361. package/loaders/XYZLoader.cjs.js +0 -1
  362. package/loaders/XYZLoader.d.ts +0 -14
  363. package/loaders/XYZLoader.js +0 -66
  364. package/loaders/lwo/IFFParser.cjs.js +0 -1
  365. package/loaders/lwo/IFFParser.js +0 -951
  366. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  367. package/loaders/lwo/LWO2Parser.js +0 -430
  368. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  369. package/loaders/lwo/LWO3Parser.js +0 -385
  370. package/math/Capsule.cjs.js +0 -1
  371. package/math/Capsule.d.ts +0 -27
  372. package/math/Capsule.js +0 -87
  373. package/math/ColorConverter.cjs.js +0 -1
  374. package/math/ColorConverter.d.ts +0 -21
  375. package/math/ColorConverter.js +0 -65
  376. package/math/ConvexHull.cjs.js +0 -1
  377. package/math/ConvexHull.d.ts +0 -89
  378. package/math/ConvexHull.js +0 -834
  379. package/math/ImprovedNoise.cjs.js +0 -1
  380. package/math/ImprovedNoise.d.ts +0 -4
  381. package/math/ImprovedNoise.js +0 -52
  382. package/math/Lut.cjs.js +0 -1
  383. package/math/Lut.d.ts +0 -27
  384. package/math/Lut.js +0 -119
  385. package/math/MeshSurfaceSampler.cjs.js +0 -1
  386. package/math/MeshSurfaceSampler.d.ts +0 -15
  387. package/math/MeshSurfaceSampler.js +0 -150
  388. package/math/OBB.cjs.js +0 -1
  389. package/math/OBB.d.ts +0 -24
  390. package/math/OBB.js +0 -296
  391. package/math/Octree.cjs.js +0 -1
  392. package/math/Octree.d.ts +0 -24
  393. package/math/Octree.js +0 -341
  394. package/math/SimplexNoise.cjs.js +0 -1
  395. package/math/SimplexNoise.d.ts +0 -17
  396. package/math/SimplexNoise.js +0 -446
  397. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  398. package/misc/ConvexObjectBreaker.d.ts +0 -25
  399. package/misc/ConvexObjectBreaker.js +0 -398
  400. package/misc/GPUComputationRenderer.cjs.js +0 -1
  401. package/misc/GPUComputationRenderer.d.ts +0 -52
  402. package/misc/GPUComputationRenderer.js +0 -296
  403. package/misc/Gyroscope.cjs.js +0 -1
  404. package/misc/Gyroscope.d.ts +0 -5
  405. package/misc/Gyroscope.js +0 -41
  406. package/misc/MD2Character.cjs.js +0 -1
  407. package/misc/MD2Character.d.ts +0 -33
  408. package/misc/MD2Character.js +0 -184
  409. package/misc/MD2CharacterComplex.cjs.js +0 -1
  410. package/misc/MD2CharacterComplex.d.ts +0 -47
  411. package/misc/MD2CharacterComplex.js +0 -379
  412. package/misc/MorphAnimMesh.cjs.js +0 -1
  413. package/misc/MorphAnimMesh.d.ts +0 -13
  414. package/misc/MorphAnimMesh.js +0 -48
  415. package/misc/MorphBlendMesh.cjs.js +0 -1
  416. package/misc/MorphBlendMesh.d.ts +0 -21
  417. package/misc/MorphBlendMesh.js +0 -203
  418. package/misc/ProgressiveLightmap.cjs.js +0 -1
  419. package/misc/ProgressiveLightmap.js +0 -285
  420. package/misc/RollerCoaster.cjs.js +0 -1
  421. package/misc/RollerCoaster.d.ts +0 -21
  422. package/misc/RollerCoaster.js +0 -375
  423. package/misc/Timer.cjs.js +0 -1
  424. package/misc/Timer.d.ts +0 -27
  425. package/misc/Timer.js +0 -125
  426. package/misc/TubePainter.cjs.js +0 -1
  427. package/misc/TubePainter.d.ts +0 -10
  428. package/misc/TubePainter.js +0 -141
  429. package/misc/Volume.cjs.js +0 -1
  430. package/misc/Volume.d.ts +0 -37
  431. package/misc/Volume.js +0 -406
  432. package/misc/VolumeSlice.cjs.js +0 -1
  433. package/misc/VolumeSlice.d.ts +0 -28
  434. package/misc/VolumeSlice.js +0 -194
  435. package/misc/WebGL.cjs.js +0 -1
  436. package/misc/WebGL.d.ts +0 -5
  437. package/misc/WebGL.js +0 -71
  438. package/modifiers/CurveModifier.cjs.js +0 -1
  439. package/modifiers/CurveModifier.d.ts +0 -39
  440. package/modifiers/CurveModifier.js +0 -288
  441. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  442. package/modifiers/EdgeSplitModifier.d.ts +0 -19
  443. package/modifiers/EdgeSplitModifier.js +0 -205
  444. package/modifiers/SimplifyModifier.cjs.js +0 -1
  445. package/modifiers/SimplifyModifier.d.ts +0 -12
  446. package/modifiers/SimplifyModifier.js +0 -407
  447. package/modifiers/TessellateModifier.cjs.js +0 -1
  448. package/modifiers/TessellateModifier.d.ts +0 -8
  449. package/modifiers/TessellateModifier.js +0 -231
  450. package/nodes/Nodes.cjs.js +0 -1
  451. package/nodes/Nodes.js +0 -204
  452. package/nodes/ShaderNode.cjs.js +0 -1
  453. package/nodes/ShaderNode.js +0 -308
  454. package/nodes/accessors/BufferNode.cjs.js +0 -1
  455. package/nodes/accessors/BufferNode.js +0 -18
  456. package/nodes/accessors/CameraNode.cjs.js +0 -1
  457. package/nodes/accessors/CameraNode.js +0 -48
  458. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  459. package/nodes/accessors/CubeTextureNode.js +0 -53
  460. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  461. package/nodes/accessors/MaterialNode.js +0 -80
  462. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  463. package/nodes/accessors/MaterialReferenceNode.js +0 -16
  464. package/nodes/accessors/ModelNode.cjs.js +0 -1
  465. package/nodes/accessors/ModelNode.js +0 -10
  466. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  467. package/nodes/accessors/ModelViewProjectionNode.js +0 -22
  468. package/nodes/accessors/NormalNode.cjs.js +0 -1
  469. package/nodes/accessors/NormalNode.js +0 -60
  470. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  471. package/nodes/accessors/Object3DNode.js +0 -85
  472. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  473. package/nodes/accessors/PointUVNode.js +0 -16
  474. package/nodes/accessors/PositionNode.cjs.js +0 -1
  475. package/nodes/accessors/PositionNode.js +0 -63
  476. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  477. package/nodes/accessors/ReferenceNode.js +0 -43
  478. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  479. package/nodes/accessors/ReflectNode.js +0 -45
  480. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  481. package/nodes/accessors/SkinningNode.js +0 -59
  482. package/nodes/accessors/TextureNode.cjs.js +0 -1
  483. package/nodes/accessors/TextureNode.js +0 -68
  484. package/nodes/accessors/UVNode.cjs.js +0 -1
  485. package/nodes/accessors/UVNode.js +0 -28
  486. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  487. package/nodes/core/ArrayUniformNode.js +0 -17
  488. package/nodes/core/AttributeNode.cjs.js +0 -1
  489. package/nodes/core/AttributeNode.js +0 -36
  490. package/nodes/core/BypassNode.cjs.js +0 -1
  491. package/nodes/core/BypassNode.js +0 -28
  492. package/nodes/core/CodeNode.cjs.js +0 -1
  493. package/nodes/core/CodeNode.js +0 -35
  494. package/nodes/core/ConstNode.cjs.js +0 -1
  495. package/nodes/core/ConstNode.js +0 -17
  496. package/nodes/core/ContextNode.cjs.js +0 -1
  497. package/nodes/core/ContextNode.js +0 -26
  498. package/nodes/core/ExpressionNode.cjs.js +0 -1
  499. package/nodes/core/ExpressionNode.js +0 -22
  500. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  501. package/nodes/core/FunctionCallNode.js +0 -45
  502. package/nodes/core/FunctionNode.cjs.js +0 -1
  503. package/nodes/core/FunctionNode.js +0 -70
  504. package/nodes/core/InputNode.cjs.js +0 -1
  505. package/nodes/core/InputNode.js +0 -48
  506. package/nodes/core/Node.cjs.js +0 -1
  507. package/nodes/core/Node.js +0 -178
  508. package/nodes/core/NodeAttribute.cjs.js +0 -1
  509. package/nodes/core/NodeAttribute.js +0 -11
  510. package/nodes/core/NodeBuilder.cjs.js +0 -1
  511. package/nodes/core/NodeBuilder.js +0 -509
  512. package/nodes/core/NodeCode.cjs.js +0 -1
  513. package/nodes/core/NodeCode.js +0 -13
  514. package/nodes/core/NodeFrame.cjs.js +0 -1
  515. package/nodes/core/NodeFrame.js +0 -37
  516. package/nodes/core/NodeFunction.cjs.js +0 -1
  517. package/nodes/core/NodeFunction.js +0 -17
  518. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  519. package/nodes/core/NodeFunctionInput.js +0 -14
  520. package/nodes/core/NodeKeywords.cjs.js +0 -1
  521. package/nodes/core/NodeKeywords.js +0 -54
  522. package/nodes/core/NodeParser.cjs.js +0 -1
  523. package/nodes/core/NodeParser.js +0 -8
  524. package/nodes/core/NodeUniform.cjs.js +0 -1
  525. package/nodes/core/NodeUniform.js +0 -21
  526. package/nodes/core/NodeUtils.cjs.js +0 -1
  527. package/nodes/core/NodeUtils.js +0 -61
  528. package/nodes/core/NodeVar.cjs.js +0 -1
  529. package/nodes/core/NodeVar.js +0 -11
  530. package/nodes/core/NodeVary.cjs.js +0 -1
  531. package/nodes/core/NodeVary.js +0 -11
  532. package/nodes/core/PropertyNode.cjs.js +0 -1
  533. package/nodes/core/PropertyNode.js +0 -26
  534. package/nodes/core/TempNode.cjs.js +0 -1
  535. package/nodes/core/TempNode.js +0 -30
  536. package/nodes/core/UniformNode.cjs.js +0 -1
  537. package/nodes/core/UniformNode.js +0 -28
  538. package/nodes/core/VarNode.cjs.js +0 -1
  539. package/nodes/core/VarNode.js +0 -38
  540. package/nodes/core/VaryNode.cjs.js +0 -1
  541. package/nodes/core/VaryNode.js +0 -38
  542. package/nodes/core/constants.cjs.js +0 -1
  543. package/nodes/core/constants.js +0 -11
  544. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  545. package/nodes/display/ColorSpaceNode.js +0 -66
  546. package/nodes/display/NormalMapNode.cjs.js +0 -1
  547. package/nodes/display/NormalMapNode.js +0 -71
  548. package/nodes/fog/FogNode.cjs.js +0 -1
  549. package/nodes/fog/FogNode.js +0 -18
  550. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  551. package/nodes/fog/FogRangeNode.js +0 -20
  552. package/nodes/functions/BSDFs.cjs.js +0 -1
  553. package/nodes/functions/BSDFs.js +0 -121
  554. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  555. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  556. package/nodes/lights/LightContextNode.cjs.js +0 -1
  557. package/nodes/lights/LightContextNode.js +0 -43
  558. package/nodes/lights/LightNode.cjs.js +0 -1
  559. package/nodes/lights/LightNode.js +0 -61
  560. package/nodes/lights/LightsNode.cjs.js +0 -1
  561. package/nodes/lights/LightsNode.js +0 -77
  562. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  563. package/nodes/loaders/NodeLoader.js +0 -212
  564. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  565. package/nodes/loaders/NodeMaterialLoader.js +0 -29
  566. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  567. package/nodes/loaders/NodeObjectLoader.js +0 -49
  568. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  569. package/nodes/materials/LineBasicNodeMaterial.js +0 -31
  570. package/nodes/materials/Materials.cjs.js +0 -1
  571. package/nodes/materials/Materials.js +0 -27
  572. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  573. package/nodes/materials/MeshBasicNodeMaterial.js +0 -32
  574. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  575. package/nodes/materials/MeshStandardNodeMaterial.js +0 -43
  576. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  577. package/nodes/materials/NodeMaterial.js +0 -79
  578. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  579. package/nodes/materials/PointsNodeMaterial.js +0 -34
  580. package/nodes/math/CondNode.cjs.js +0 -1
  581. package/nodes/math/CondNode.js +0 -49
  582. package/nodes/math/MathNode.cjs.js +0 -1
  583. package/nodes/math/MathNode.js +0 -206
  584. package/nodes/math/OperatorNode.cjs.js +0 -1
  585. package/nodes/math/OperatorNode.js +0 -124
  586. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  587. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  588. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  589. package/nodes/parsers/GLSLNodeParser.js +0 -13
  590. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  591. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  592. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  593. package/nodes/parsers/WGSLNodeParser.js +0 -13
  594. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  595. package/nodes/procedural/CheckerNode.js +0 -26
  596. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  597. package/nodes/utils/ArrayElementNode.js +0 -22
  598. package/nodes/utils/ConvertNode.cjs.js +0 -1
  599. package/nodes/utils/ConvertNode.js +0 -29
  600. package/nodes/utils/JoinNode.cjs.js +0 -1
  601. package/nodes/utils/JoinNode.js +0 -29
  602. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  603. package/nodes/utils/MatcapUVNode.js +0 -18
  604. package/nodes/utils/OscNode.cjs.js +0 -1
  605. package/nodes/utils/OscNode.js +0 -55
  606. package/nodes/utils/SplitNode.cjs.js +0 -1
  607. package/nodes/utils/SplitNode.js +0 -58
  608. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  609. package/nodes/utils/SpriteSheetUVNode.js +0 -39
  610. package/nodes/utils/TimerNode.cjs.js +0 -1
  611. package/nodes/utils/TimerNode.js +0 -47
  612. package/objects/GroundProjectedEnv.cjs.js +0 -1
  613. package/objects/GroundProjectedEnv.d.ts +0 -12
  614. package/objects/GroundProjectedEnv.js +0 -145
  615. package/objects/Lensflare.cjs.js +0 -1
  616. package/objects/Lensflare.d.ts +0 -17
  617. package/objects/Lensflare.js +0 -332
  618. package/objects/LightningStorm.cjs.js +0 -1
  619. package/objects/LightningStorm.d.ts +0 -32
  620. package/objects/LightningStorm.js +0 -174
  621. package/objects/MarchingCubes.cjs.js +0 -1
  622. package/objects/MarchingCubes.d.ts +0 -75
  623. package/objects/MarchingCubes.js +0 -610
  624. package/objects/Reflector.cjs.js +0 -1
  625. package/objects/Reflector.d.ts +0 -19
  626. package/objects/Reflector.js +0 -188
  627. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  628. package/objects/ReflectorForSSRPass.d.ts +0 -57
  629. package/objects/ReflectorForSSRPass.js +0 -298
  630. package/objects/ReflectorRTT.cjs.js +0 -1
  631. package/objects/ReflectorRTT.js +0 -11
  632. package/objects/Refractor.cjs.js +0 -1
  633. package/objects/Refractor.d.ts +0 -19
  634. package/objects/Refractor.js +0 -220
  635. package/objects/ShadowMesh.cjs.js +0 -1
  636. package/objects/ShadowMesh.d.ts +0 -7
  637. package/objects/ShadowMesh.js +0 -50
  638. package/objects/Sky.cjs.js +0 -1
  639. package/objects/Sky.d.ts +0 -30
  640. package/objects/Sky.js +0 -85
  641. package/objects/Water.cjs.js +0 -1
  642. package/objects/Water.d.ts +0 -22
  643. package/objects/Water.js +0 -279
  644. package/objects/Water2.cjs.js +0 -1
  645. package/objects/Water2.d.ts +0 -30
  646. package/objects/Water2.js +0 -288
  647. package/offscreen/jank.cjs.js +0 -1
  648. package/offscreen/jank.js +0 -30
  649. package/offscreen/offscreen.cjs.js +0 -1
  650. package/offscreen/offscreen.js +0 -7
  651. package/offscreen/scene.cjs.js +0 -1
  652. package/offscreen/scene.js +0 -73
  653. package/physics/AmmoPhysics.cjs.js +0 -1
  654. package/physics/AmmoPhysics.d.ts +0 -7
  655. package/physics/AmmoPhysics.js +0 -206
  656. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  657. package/postprocessing/AdaptiveToneMappingPass.d.ts +0 -29
  658. package/postprocessing/AdaptiveToneMappingPass.js +0 -247
  659. package/postprocessing/AfterimagePass.cjs.js +0 -1
  660. package/postprocessing/AfterimagePass.d.ts +0 -15
  661. package/postprocessing/AfterimagePass.js +0 -76
  662. package/postprocessing/BloomPass.cjs.js +0 -1
  663. package/postprocessing/BloomPass.d.ts +0 -16
  664. package/postprocessing/BloomPass.js +0 -116
  665. package/postprocessing/BokehPass.cjs.js +0 -1
  666. package/postprocessing/BokehPass.d.ts +0 -23
  667. package/postprocessing/BokehPass.js +0 -106
  668. package/postprocessing/ClearPass.cjs.js +0 -1
  669. package/postprocessing/ClearPass.d.ts +0 -10
  670. package/postprocessing/ClearPass.js +0 -42
  671. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  672. package/postprocessing/CubeTexturePass.d.ts +0 -14
  673. package/postprocessing/CubeTexturePass.js +0 -48
  674. package/postprocessing/DotScreenPass.cjs.js +0 -1
  675. package/postprocessing/DotScreenPass.d.ts +0 -10
  676. package/postprocessing/DotScreenPass.js +0 -48
  677. package/postprocessing/EffectComposer.cjs.js +0 -1
  678. package/postprocessing/EffectComposer.d.ts +0 -27
  679. package/postprocessing/EffectComposer.js +0 -186
  680. package/postprocessing/FilmPass.cjs.js +0 -1
  681. package/postprocessing/FilmPass.d.ts +0 -10
  682. package/postprocessing/FilmPass.js +0 -47
  683. package/postprocessing/GlitchPass.cjs.js +0 -1
  684. package/postprocessing/GlitchPass.d.ts +0 -15
  685. package/postprocessing/GlitchPass.js +0 -96
  686. package/postprocessing/HalftonePass.cjs.js +0 -1
  687. package/postprocessing/HalftonePass.d.ts +0 -23
  688. package/postprocessing/HalftonePass.js +0 -64
  689. package/postprocessing/LUTPass.cjs.js +0 -1
  690. package/postprocessing/LUTPass.d.ts +0 -13
  691. package/postprocessing/LUTPass.js +0 -161
  692. package/postprocessing/MaskPass.cjs.js +0 -1
  693. package/postprocessing/MaskPass.d.ts +0 -14
  694. package/postprocessing/MaskPass.js +0 -79
  695. package/postprocessing/OutlinePass.cjs.js +0 -1
  696. package/postprocessing/OutlinePass.d.ts +0 -53
  697. package/postprocessing/OutlinePass.js +0 -580
  698. package/postprocessing/Pass.cjs.js +0 -1
  699. package/postprocessing/Pass.d.ts +0 -20
  700. package/postprocessing/Pass.js +0 -61
  701. package/postprocessing/RenderPass.cjs.js +0 -1
  702. package/postprocessing/RenderPass.d.ts +0 -14
  703. package/postprocessing/RenderPass.js +0 -71
  704. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  705. package/postprocessing/RenderPixelatedPass.js +0 -213
  706. package/postprocessing/SAOPass.cjs.js +0 -1
  707. package/postprocessing/SAOPass.d.ts +0 -79
  708. package/postprocessing/SAOPass.js +0 -317
  709. package/postprocessing/SMAAPass.cjs.js +0 -1
  710. package/postprocessing/SMAAPass.d.ts +0 -21
  711. package/postprocessing/SMAAPass.js +0 -132
  712. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  713. package/postprocessing/SSAARenderPass.d.ts +0 -17
  714. package/postprocessing/SSAARenderPass.js +0 -118
  715. package/postprocessing/SSAOPass.cjs.js +0 -1
  716. package/postprocessing/SSAOPass.d.ts +0 -71
  717. package/postprocessing/SSAOPass.js +0 -314
  718. package/postprocessing/SSRPass.cjs.js +0 -1
  719. package/postprocessing/SSRPass.d.ts +0 -124
  720. package/postprocessing/SSRPass.js +0 -508
  721. package/postprocessing/SavePass.cjs.js +0 -1
  722. package/postprocessing/SavePass.d.ts +0 -12
  723. package/postprocessing/SavePass.js +0 -42
  724. package/postprocessing/ShaderPass.cjs.js +0 -1
  725. package/postprocessing/ShaderPass.d.ts +0 -13
  726. package/postprocessing/ShaderPass.js +0 -55
  727. package/postprocessing/TAARenderPass.cjs.js +0 -1
  728. package/postprocessing/TAARenderPass.d.ts +0 -8
  729. package/postprocessing/TAARenderPass.js +0 -107
  730. package/postprocessing/TexturePass.cjs.js +0 -1
  731. package/postprocessing/TexturePass.d.ts +0 -12
  732. package/postprocessing/TexturePass.js +0 -40
  733. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  734. package/postprocessing/UnrealBloomPass.d.ts +0 -31
  735. package/postprocessing/UnrealBloomPass.js +0 -273
  736. package/postprocessing/WaterPass.cjs.js +0 -1
  737. package/postprocessing/WaterPass.d.ts +0 -12
  738. package/postprocessing/WaterPass.js +0 -102
  739. package/renderers/CSS2DRenderer.cjs.js +0 -1
  740. package/renderers/CSS2DRenderer.d.ts +0 -22
  741. package/renderers/CSS2DRenderer.js +0 -152
  742. package/renderers/CSS3DRenderer.cjs.js +0 -1
  743. package/renderers/CSS3DRenderer.d.ts +0 -26
  744. package/renderers/CSS3DRenderer.js +0 -166
  745. package/renderers/Projector.cjs.js +0 -1
  746. package/renderers/Projector.d.ts +0 -60
  747. package/renderers/Projector.js +0 -678
  748. package/renderers/SVGRenderer.cjs.js +0 -1
  749. package/renderers/SVGRenderer.d.ts +0 -25
  750. package/renderers/SVGRenderer.js +0 -416
  751. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  752. package/renderers/nodes/accessors/CameraNode.js +0 -73
  753. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  754. package/renderers/nodes/accessors/ModelNode.js +0 -69
  755. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  756. package/renderers/nodes/accessors/ModelViewProjectionNode.js +0 -33
  757. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  758. package/renderers/nodes/accessors/NormalNode.js +0 -70
  759. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  760. package/renderers/nodes/accessors/PositionNode.js +0 -30
  761. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  762. package/renderers/nodes/accessors/UVNode.js +0 -17
  763. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  764. package/renderers/nodes/core/AttributeNode.js +0 -43
  765. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  766. package/renderers/nodes/core/InputNode.js +0 -40
  767. package/renderers/nodes/core/Node.cjs.js +0 -1
  768. package/renderers/nodes/core/Node.js +0 -43
  769. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  770. package/renderers/nodes/core/NodeAttribute.js +0 -12
  771. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  772. package/renderers/nodes/core/NodeBuilder.js +0 -309
  773. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  774. package/renderers/nodes/core/NodeFrame.js +0 -37
  775. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  776. package/renderers/nodes/core/NodeSlot.js +0 -10
  777. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  778. package/renderers/nodes/core/NodeUniform.js +0 -22
  779. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  780. package/renderers/nodes/core/NodeVary.js +0 -13
  781. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  782. package/renderers/nodes/core/VaryNode.js +0 -27
  783. package/renderers/nodes/core/constants.cjs.js +0 -1
  784. package/renderers/nodes/core/constants.js +0 -19
  785. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  786. package/renderers/nodes/inputs/ColorNode.js +0 -16
  787. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  788. package/renderers/nodes/inputs/FloatNode.js +0 -16
  789. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  790. package/renderers/nodes/inputs/Matrix3Node.js +0 -17
  791. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  792. package/renderers/nodes/inputs/Matrix4Node.js +0 -17
  793. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  794. package/renderers/nodes/inputs/TextureNode.js +0 -27
  795. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  796. package/renderers/nodes/inputs/Vector2Node.js +0 -16
  797. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  798. package/renderers/nodes/inputs/Vector3Node.js +0 -17
  799. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  800. package/renderers/nodes/inputs/Vector4Node.js +0 -17
  801. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  802. package/renderers/nodes/math/MathNode.js +0 -64
  803. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  804. package/renderers/nodes/math/OperatorNode.js +0 -57
  805. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  806. package/renderers/nodes/utils/SwitchNode.js +0 -24
  807. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  808. package/renderers/nodes/utils/TimerNode.js +0 -18
  809. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  810. package/renderers/webgpu/WebGPU.js +0 -25
  811. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  812. package/renderers/webgpu/WebGPUAttributes.js +0 -75
  813. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  814. package/renderers/webgpu/WebGPUBackground.js +0 -77
  815. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  816. package/renderers/webgpu/WebGPUBinding.js +0 -16
  817. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  818. package/renderers/webgpu/WebGPUBindings.js +0 -190
  819. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  820. package/renderers/webgpu/WebGPUComputePipelines.js +0 -54
  821. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  822. package/renderers/webgpu/WebGPUGeometries.js +0 -50
  823. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  824. package/renderers/webgpu/WebGPUInfo.js +0 -50
  825. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  826. package/renderers/webgpu/WebGPUObjects.js +0 -29
  827. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  828. package/renderers/webgpu/WebGPUProperties.js +0 -27
  829. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  830. package/renderers/webgpu/WebGPURenderLists.js +0 -134
  831. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  832. package/renderers/webgpu/WebGPURenderPipelines.js +0 -671
  833. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  834. package/renderers/webgpu/WebGPURenderer.js +0 -713
  835. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  836. package/renderers/webgpu/WebGPUSampledTexture.js +0 -53
  837. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  838. package/renderers/webgpu/WebGPUSampler.js +0 -19
  839. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  840. package/renderers/webgpu/WebGPUStorageBuffer.js +0 -19
  841. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  842. package/renderers/webgpu/WebGPUTextureRenderer.js +0 -28
  843. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  844. package/renderers/webgpu/WebGPUTextureUtils.js +0 -108
  845. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  846. package/renderers/webgpu/WebGPUTextures.js +0 -630
  847. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  848. package/renderers/webgpu/WebGPUUniform.js +0 -107
  849. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  850. package/renderers/webgpu/WebGPUUniformsGroup.js +0 -215
  851. package/renderers/webgpu/constants.cjs.js +0 -1
  852. package/renderers/webgpu/constants.js +0 -221
  853. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  854. package/renderers/webgpu/nodes/ShaderLib.js +0 -41
  855. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  856. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +0 -235
  857. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  858. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +0 -87
  859. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  860. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -15
  861. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  862. package/renderers/webgpu/nodes/WebGPUNodes.js +0 -77
  863. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  864. package/shaders/ACESFilmicToneMappingShader.d.ts +0 -9
  865. package/shaders/ACESFilmicToneMappingShader.js +0 -28
  866. package/shaders/AfterimageShader.cjs.js +0 -1
  867. package/shaders/AfterimageShader.d.ts +0 -10
  868. package/shaders/AfterimageShader.js +0 -22
  869. package/shaders/BasicShader.cjs.js +0 -1
  870. package/shaders/BasicShader.d.ts +0 -5
  871. package/shaders/BasicShader.js +0 -10
  872. package/shaders/BleachBypassShader.cjs.js +0 -1
  873. package/shaders/BleachBypassShader.d.ts +0 -9
  874. package/shaders/BleachBypassShader.js +0 -19
  875. package/shaders/BlendShader.cjs.js +0 -1
  876. package/shaders/BlendShader.d.ts +0 -18
  877. package/shaders/BlendShader.js +0 -23
  878. package/shaders/BokehShader.cjs.js +0 -1
  879. package/shaders/BokehShader.d.ts +0 -19
  880. package/shaders/BokehShader.js +0 -44
  881. package/shaders/BokehShader2.cjs.js +0 -1
  882. package/shaders/BokehShader2.d.ts +0 -43
  883. package/shaders/BokehShader2.js +0 -98
  884. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  885. package/shaders/BrightnessContrastShader.d.ts +0 -15
  886. package/shaders/BrightnessContrastShader.js +0 -23
  887. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  888. package/shaders/ColorCorrectionShader.d.ts +0 -19
  889. package/shaders/ColorCorrectionShader.js +0 -26
  890. package/shaders/ColorifyShader.cjs.js +0 -1
  891. package/shaders/ColorifyShader.d.ts +0 -13
  892. package/shaders/ColorifyShader.js +0 -20
  893. package/shaders/ConvolutionShader.cjs.js +0 -1
  894. package/shaders/ConvolutionShader.d.ts +0 -16
  895. package/shaders/ConvolutionShader.js +0 -51
  896. package/shaders/CopyShader.cjs.js +0 -1
  897. package/shaders/CopyShader.d.ts +0 -9
  898. package/shaders/CopyShader.js +0 -17
  899. package/shaders/DOFMipMapShader.cjs.js +0 -1
  900. package/shaders/DOFMipMapShader.d.ts +0 -18
  901. package/shaders/DOFMipMapShader.js +0 -25
  902. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  903. package/shaders/DepthLimitedBlurShader.d.ts +0 -28
  904. package/shaders/DepthLimitedBlurShader.js +0 -69
  905. package/shaders/DigitalGlitch.cjs.js +0 -1
  906. package/shaders/DigitalGlitch.d.ts +0 -39
  907. package/shaders/DigitalGlitch.js +0 -106
  908. package/shaders/DotScreenShader.cjs.js +0 -1
  909. package/shaders/DotScreenShader.d.ts +0 -22
  910. package/shaders/DotScreenShader.js +0 -31
  911. package/shaders/FXAAShader.cjs.js +0 -1
  912. package/shaders/FXAAShader.d.ts +0 -13
  913. package/shaders/FXAAShader.js +0 -23
  914. package/shaders/FilmShader.cjs.js +0 -1
  915. package/shaders/FilmShader.d.ts +0 -24
  916. package/shaders/FilmShader.js +0 -56
  917. package/shaders/FocusShader.cjs.js +0 -1
  918. package/shaders/FocusShader.d.ts +0 -21
  919. package/shaders/FocusShader.js +0 -28
  920. package/shaders/FreiChenShader.cjs.js +0 -1
  921. package/shaders/FreiChenShader.d.ts +0 -13
  922. package/shaders/FreiChenShader.js +0 -28
  923. package/shaders/FresnelShader.cjs.js +0 -1
  924. package/shaders/FresnelShader.d.ts +0 -21
  925. package/shaders/FresnelShader.js +0 -26
  926. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  927. package/shaders/GammaCorrectionShader.d.ts +0 -8
  928. package/shaders/GammaCorrectionShader.js +0 -15
  929. package/shaders/GodRaysShader.cjs.js +0 -1
  930. package/shaders/GodRaysShader.d.ts +0 -58
  931. package/shaders/GodRaysShader.js +0 -137
  932. package/shaders/HalftoneShader.cjs.js +0 -1
  933. package/shaders/HalftoneShader.d.ts +0 -45
  934. package/shaders/HalftoneShader.js +0 -69
  935. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  936. package/shaders/HorizontalBlurShader.d.ts +0 -9
  937. package/shaders/HorizontalBlurShader.js +0 -59
  938. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  939. package/shaders/HorizontalTiltShiftShader.d.ts +0 -15
  940. package/shaders/HorizontalTiltShiftShader.js +0 -25
  941. package/shaders/HueSaturationShader.cjs.js +0 -1
  942. package/shaders/HueSaturationShader.d.ts +0 -15
  943. package/shaders/HueSaturationShader.js +0 -25
  944. package/shaders/KaleidoShader.cjs.js +0 -1
  945. package/shaders/KaleidoShader.d.ts +0 -15
  946. package/shaders/KaleidoShader.js +0 -26
  947. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  948. package/shaders/LuminosityHighPassShader.d.ts +0 -23
  949. package/shaders/LuminosityHighPassShader.js +0 -31
  950. package/shaders/LuminosityShader.cjs.js +0 -1
  951. package/shaders/LuminosityShader.d.ts +0 -9
  952. package/shaders/LuminosityShader.js +0 -15
  953. package/shaders/MirrorShader.cjs.js +0 -1
  954. package/shaders/MirrorShader.d.ts +0 -12
  955. package/shaders/MirrorShader.js +0 -20
  956. package/shaders/NormalMapShader.cjs.js +0 -1
  957. package/shaders/NormalMapShader.d.ts +0 -19
  958. package/shaders/NormalMapShader.js +0 -27
  959. package/shaders/ParallaxShader.cjs.js +0 -1
  960. package/shaders/ParallaxShader.d.ts +0 -28
  961. package/shaders/ParallaxShader.js +0 -54
  962. package/shaders/PixelShader.cjs.js +0 -1
  963. package/shaders/PixelShader.d.ts +0 -15
  964. package/shaders/PixelShader.js +0 -20
  965. package/shaders/RGBShiftShader.cjs.js +0 -1
  966. package/shaders/RGBShiftShader.d.ts +0 -15
  967. package/shaders/RGBShiftShader.js +0 -26
  968. package/shaders/SAOShader.cjs.js +0 -1
  969. package/shaders/SAOShader.d.ts +0 -25
  970. package/shaders/SAOShader.js +0 -60
  971. package/shaders/SMAAShader.cjs.js +0 -1
  972. package/shaders/SMAAShader.d.ts +0 -55
  973. package/shaders/SMAAShader.js +0 -151
  974. package/shaders/SSAOShader.cjs.js +0 -1
  975. package/shaders/SSAOShader.d.ts +0 -80
  976. package/shaders/SSAOShader.js +0 -100
  977. package/shaders/SSRShader.cjs.js +0 -1
  978. package/shaders/SSRShader.d.ts +0 -90
  979. package/shaders/SSRShader.js +0 -379
  980. package/shaders/SepiaShader.cjs.js +0 -1
  981. package/shaders/SepiaShader.d.ts +0 -12
  982. package/shaders/SepiaShader.js +0 -19
  983. package/shaders/SobelOperatorShader.cjs.js +0 -1
  984. package/shaders/SobelOperatorShader.d.ts +0 -13
  985. package/shaders/SobelOperatorShader.js +0 -33
  986. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  987. package/shaders/SubsurfaceScatteringShader.d.ts +0 -5
  988. package/shaders/SubsurfaceScatteringShader.js +0 -45
  989. package/shaders/TechnicolorShader.cjs.js +0 -1
  990. package/shaders/TechnicolorShader.d.ts +0 -9
  991. package/shaders/TechnicolorShader.js +0 -17
  992. package/shaders/ToneMapShader.cjs.js +0 -1
  993. package/shaders/ToneMapShader.d.ts +0 -24
  994. package/shaders/ToneMapShader.js +0 -32
  995. package/shaders/ToonShader.cjs.js +0 -1
  996. package/shaders/ToonShader.d.ts +0 -100
  997. package/shaders/ToonShader.js +0 -112
  998. package/shaders/TriangleBlurShader.cjs.js +0 -1
  999. package/shaders/TriangleBlurShader.d.ts +0 -13
  1000. package/shaders/TriangleBlurShader.js +0 -27
  1001. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1002. package/shaders/UnpackDepthRGBAShader.d.ts +0 -12
  1003. package/shaders/UnpackDepthRGBAShader.js +0 -18
  1004. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1005. package/shaders/VerticalBlurShader.d.ts +0 -9
  1006. package/shaders/VerticalBlurShader.js +0 -60
  1007. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1008. package/shaders/VerticalTiltShiftShader.d.ts +0 -15
  1009. package/shaders/VerticalTiltShiftShader.js +0 -25
  1010. package/shaders/VignetteShader.cjs.js +0 -1
  1011. package/shaders/VignetteShader.d.ts +0 -15
  1012. package/shaders/VignetteShader.js +0 -32
  1013. package/shaders/VolumeShader.cjs.js +0 -1
  1014. package/shaders/VolumeShader.d.ts +0 -25
  1015. package/shaders/VolumeShader.js +0 -81
  1016. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1017. package/shaders/WaterRefractionShader.d.ts +0 -21
  1018. package/shaders/WaterRefractionShader.js +0 -25
  1019. package/shaders/types.cjs.js +0 -1
  1020. package/shaders/types.d.ts +0 -14
  1021. package/shaders/types.js +0 -1
  1022. package/textures/FlakesTexture.cjs.js +0 -1
  1023. package/textures/FlakesTexture.d.ts +0 -4
  1024. package/textures/FlakesTexture.js +0 -32
  1025. package/types/helpers.cjs.js +0 -1
  1026. package/types/helpers.d.ts +0 -1
  1027. package/types/helpers.js +0 -3
  1028. package/types/shared.cjs.js +0 -1
  1029. package/types/shared.d.ts +0 -2
  1030. package/types/shared.js +0 -1
  1031. package/types/utils.cjs.js +0 -1
  1032. package/types/utils.d.ts +0 -3
  1033. package/types/utils.js +0 -1
  1034. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1035. package/utils/BufferGeometryUtils.d.ts +0 -15
  1036. package/utils/BufferGeometryUtils.js +0 -728
  1037. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1038. package/utils/GeometryCompressionUtils.d.ts +0 -7
  1039. package/utils/GeometryCompressionUtils.js +0 -545
  1040. package/utils/GeometryUtils.cjs.js +0 -1
  1041. package/utils/GeometryUtils.d.ts +0 -6
  1042. package/utils/GeometryUtils.js +0 -161
  1043. package/utils/LDrawUtils.cjs.js +0 -1
  1044. package/utils/LDrawUtils.d.ts +0 -5
  1045. package/utils/LDrawUtils.js +0 -144
  1046. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1047. package/utils/RoughnessMipmapper.js +0 -257
  1048. package/utils/SceneUtils.cjs.js +0 -1
  1049. package/utils/SceneUtils.d.ts +0 -9
  1050. package/utils/SceneUtils.js +0 -41
  1051. package/utils/ShadowMapViewer.cjs.js +0 -1
  1052. package/utils/ShadowMapViewer.d.ts +0 -24
  1053. package/utils/ShadowMapViewer.js +0 -160
  1054. package/utils/SkeletonUtils.cjs.js +0 -1
  1055. package/utils/SkeletonUtils.d.ts +0 -30
  1056. package/utils/SkeletonUtils.js +0 -383
  1057. package/utils/UVsDebug.cjs.js +0 -1
  1058. package/utils/UVsDebug.d.ts +0 -3
  1059. package/utils/UVsDebug.js +0 -115
  1060. package/utils/WorkerPool.cjs.js +0 -1
  1061. package/utils/WorkerPool.js +0 -82
  1062. package/webxr/ARButton.cjs.js +0 -1
  1063. package/webxr/ARButton.d.ts +0 -5
  1064. package/webxr/ARButton.js +0 -145
  1065. package/webxr/OculusHandModel.cjs.js +0 -1
  1066. package/webxr/OculusHandModel.d.ts +0 -22
  1067. package/webxr/OculusHandModel.js +0 -90
  1068. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1069. package/webxr/OculusHandPointerModel.d.ts +0 -63
  1070. package/webxr/OculusHandPointerModel.js +0 -248
  1071. package/webxr/Text2D.cjs.js +0 -1
  1072. package/webxr/Text2D.d.ts +0 -3
  1073. package/webxr/Text2D.js +0 -32
  1074. package/webxr/VRButton.cjs.js +0 -1
  1075. package/webxr/VRButton.d.ts +0 -7
  1076. package/webxr/VRButton.js +0 -136
  1077. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1078. package/webxr/XRControllerModelFactory.d.ts +0 -19
  1079. package/webxr/XRControllerModelFactory.js +0 -237
  1080. package/webxr/XREstimatedLight.cjs.js +0 -1
  1081. package/webxr/XREstimatedLight.d.ts +0 -32
  1082. package/webxr/XREstimatedLight.js +0 -153
  1083. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1084. package/webxr/XRHandMeshModel.d.ts +0 -9
  1085. package/webxr/XRHandMeshModel.js +0 -62
  1086. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1087. package/webxr/XRHandModelFactory.d.ts +0 -25
  1088. package/webxr/XRHandModelFactory.js +0 -64
  1089. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
  1090. package/webxr/XRHandPrimitiveModel.d.ts +0 -24
  1091. package/webxr/XRHandPrimitiveModel.js +0 -54
@@ -1,2083 +0,0 @@
1
- import { Loader, FileLoader, Matrix3, Vector2, Vector3, ShapeUtils, Box2, Shape, Path, BufferGeometry, Float32BufferAttribute, ShapePath } from 'three';
2
-
3
- class SVGLoader extends Loader {
4
- constructor(manager) {
5
- super(manager); // Default dots per inch
6
-
7
- this.defaultDPI = 90; // Accepted units: 'mm', 'cm', 'in', 'pt', 'pc', 'px'
8
-
9
- this.defaultUnit = 'px';
10
- }
11
-
12
- load(url, onLoad, onProgress, onError) {
13
- const scope = this;
14
- const loader = new FileLoader(scope.manager);
15
- loader.setPath(scope.path);
16
- loader.setRequestHeader(scope.requestHeader);
17
- loader.setWithCredentials(scope.withCredentials);
18
- loader.load(url, function (text) {
19
- try {
20
- onLoad(scope.parse(text));
21
- } catch (e) {
22
- if (onError) {
23
- onError(e);
24
- } else {
25
- console.error(e);
26
- }
27
-
28
- scope.manager.itemError(url);
29
- }
30
- }, onProgress, onError);
31
- }
32
-
33
- parse(text) {
34
- const scope = this;
35
-
36
- function parseNode(node, style) {
37
- if (node.nodeType !== 1) return;
38
- const transform = getNodeTransform(node);
39
- let traverseChildNodes = true;
40
- let path = null;
41
-
42
- switch (node.nodeName) {
43
- case 'svg':
44
- break;
45
-
46
- case 'style':
47
- parseCSSStylesheet(node);
48
- break;
49
-
50
- case 'g':
51
- style = parseStyle(node, style);
52
- break;
53
-
54
- case 'path':
55
- style = parseStyle(node, style);
56
- if (node.hasAttribute('d')) path = parsePathNode(node);
57
- break;
58
-
59
- case 'rect':
60
- style = parseStyle(node, style);
61
- path = parseRectNode(node);
62
- break;
63
-
64
- case 'polygon':
65
- style = parseStyle(node, style);
66
- path = parsePolygonNode(node);
67
- break;
68
-
69
- case 'polyline':
70
- style = parseStyle(node, style);
71
- path = parsePolylineNode(node);
72
- break;
73
-
74
- case 'circle':
75
- style = parseStyle(node, style);
76
- path = parseCircleNode(node);
77
- break;
78
-
79
- case 'ellipse':
80
- style = parseStyle(node, style);
81
- path = parseEllipseNode(node);
82
- break;
83
-
84
- case 'line':
85
- style = parseStyle(node, style);
86
- path = parseLineNode(node);
87
- break;
88
-
89
- case 'defs':
90
- traverseChildNodes = false;
91
- break;
92
-
93
- case 'mask':
94
- traverseChildNodes = false;
95
- break;
96
-
97
- case 'use':
98
- style = parseStyle(node, style);
99
- const usedNodeId = node.href.baseVal.substring(1);
100
- const usedNode = node.viewportElement.getElementById(usedNodeId);
101
-
102
- if (usedNode) {
103
- parseNode(usedNode, style);
104
- } else {
105
- console.warn("SVGLoader: 'use node' references non-existent node id: " + usedNodeId);
106
- }
107
-
108
- break;
109
-
110
- }
111
-
112
- if (path) {
113
- if (style.fill !== undefined && style.fill !== 'none') {
114
- path.color.setStyle(style.fill);
115
- }
116
-
117
- transformPath(path, currentTransform);
118
- paths.push(path);
119
- path.userData = {
120
- node: node,
121
- style: style
122
- };
123
- }
124
-
125
- if (traverseChildNodes) {
126
- const nodes = node.childNodes;
127
-
128
- for (let i = 0; i < nodes.length; i++) {
129
- parseNode(nodes[i], style);
130
- }
131
- }
132
-
133
- if (transform) {
134
- transformStack.pop();
135
-
136
- if (transformStack.length > 0) {
137
- currentTransform.copy(transformStack[transformStack.length - 1]);
138
- } else {
139
- currentTransform.identity();
140
- }
141
- }
142
- }
143
-
144
- function parsePathNode(node) {
145
- const path = new ShapePath();
146
- const point = new Vector2();
147
- const control = new Vector2();
148
- const firstPoint = new Vector2();
149
- let isFirstPoint = true;
150
- let doSetFirstPoint = false;
151
- const d = node.getAttribute('d'); // console.log( d );
152
-
153
- const commands = d.match(/[a-df-z][^a-df-z]*/gi);
154
-
155
- for (let i = 0, l = commands.length; i < l; i++) {
156
- const command = commands[i];
157
- const type = command.charAt(0);
158
- const data = command.substr(1).trim();
159
-
160
- if (isFirstPoint === true) {
161
- doSetFirstPoint = true;
162
- isFirstPoint = false;
163
- }
164
-
165
- let numbers;
166
-
167
- switch (type) {
168
- case 'M':
169
- numbers = parseFloats(data);
170
-
171
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
172
- point.x = numbers[j + 0];
173
- point.y = numbers[j + 1];
174
- control.x = point.x;
175
- control.y = point.y;
176
-
177
- if (j === 0) {
178
- path.moveTo(point.x, point.y);
179
- } else {
180
- path.lineTo(point.x, point.y);
181
- }
182
-
183
- if (j === 0) firstPoint.copy(point);
184
- }
185
-
186
- break;
187
-
188
- case 'H':
189
- numbers = parseFloats(data);
190
-
191
- for (let j = 0, jl = numbers.length; j < jl; j++) {
192
- point.x = numbers[j];
193
- control.x = point.x;
194
- control.y = point.y;
195
- path.lineTo(point.x, point.y);
196
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
197
- }
198
-
199
- break;
200
-
201
- case 'V':
202
- numbers = parseFloats(data);
203
-
204
- for (let j = 0, jl = numbers.length; j < jl; j++) {
205
- point.y = numbers[j];
206
- control.x = point.x;
207
- control.y = point.y;
208
- path.lineTo(point.x, point.y);
209
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
210
- }
211
-
212
- break;
213
-
214
- case 'L':
215
- numbers = parseFloats(data);
216
-
217
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
218
- point.x = numbers[j + 0];
219
- point.y = numbers[j + 1];
220
- control.x = point.x;
221
- control.y = point.y;
222
- path.lineTo(point.x, point.y);
223
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
224
- }
225
-
226
- break;
227
-
228
- case 'C':
229
- numbers = parseFloats(data);
230
-
231
- for (let j = 0, jl = numbers.length; j < jl; j += 6) {
232
- path.bezierCurveTo(numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], numbers[j + 5]);
233
- control.x = numbers[j + 2];
234
- control.y = numbers[j + 3];
235
- point.x = numbers[j + 4];
236
- point.y = numbers[j + 5];
237
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
238
- }
239
-
240
- break;
241
-
242
- case 'S':
243
- numbers = parseFloats(data);
244
-
245
- for (let j = 0, jl = numbers.length; j < jl; j += 4) {
246
- path.bezierCurveTo(getReflection(point.x, control.x), getReflection(point.y, control.y), numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3]);
247
- control.x = numbers[j + 0];
248
- control.y = numbers[j + 1];
249
- point.x = numbers[j + 2];
250
- point.y = numbers[j + 3];
251
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
252
- }
253
-
254
- break;
255
-
256
- case 'Q':
257
- numbers = parseFloats(data);
258
-
259
- for (let j = 0, jl = numbers.length; j < jl; j += 4) {
260
- path.quadraticCurveTo(numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3]);
261
- control.x = numbers[j + 0];
262
- control.y = numbers[j + 1];
263
- point.x = numbers[j + 2];
264
- point.y = numbers[j + 3];
265
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
266
- }
267
-
268
- break;
269
-
270
- case 'T':
271
- numbers = parseFloats(data);
272
-
273
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
274
- const rx = getReflection(point.x, control.x);
275
- const ry = getReflection(point.y, control.y);
276
- path.quadraticCurveTo(rx, ry, numbers[j + 0], numbers[j + 1]);
277
- control.x = rx;
278
- control.y = ry;
279
- point.x = numbers[j + 0];
280
- point.y = numbers[j + 1];
281
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
282
- }
283
-
284
- break;
285
-
286
- case 'A':
287
- numbers = parseFloats(data, [3, 4], 7);
288
-
289
- for (let j = 0, jl = numbers.length; j < jl; j += 7) {
290
- // skip command if start point == end point
291
- if (numbers[j + 5] == point.x && numbers[j + 6] == point.y) continue;
292
- const start = point.clone();
293
- point.x = numbers[j + 5];
294
- point.y = numbers[j + 6];
295
- control.x = point.x;
296
- control.y = point.y;
297
- parseArcCommand(path, numbers[j], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], start, point);
298
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
299
- }
300
-
301
- break;
302
-
303
- case 'm':
304
- numbers = parseFloats(data);
305
-
306
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
307
- point.x += numbers[j + 0];
308
- point.y += numbers[j + 1];
309
- control.x = point.x;
310
- control.y = point.y;
311
-
312
- if (j === 0) {
313
- path.moveTo(point.x, point.y);
314
- } else {
315
- path.lineTo(point.x, point.y);
316
- }
317
-
318
- if (j === 0) firstPoint.copy(point);
319
- }
320
-
321
- break;
322
-
323
- case 'h':
324
- numbers = parseFloats(data);
325
-
326
- for (let j = 0, jl = numbers.length; j < jl; j++) {
327
- point.x += numbers[j];
328
- control.x = point.x;
329
- control.y = point.y;
330
- path.lineTo(point.x, point.y);
331
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
332
- }
333
-
334
- break;
335
-
336
- case 'v':
337
- numbers = parseFloats(data);
338
-
339
- for (let j = 0, jl = numbers.length; j < jl; j++) {
340
- point.y += numbers[j];
341
- control.x = point.x;
342
- control.y = point.y;
343
- path.lineTo(point.x, point.y);
344
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
345
- }
346
-
347
- break;
348
-
349
- case 'l':
350
- numbers = parseFloats(data);
351
-
352
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
353
- point.x += numbers[j + 0];
354
- point.y += numbers[j + 1];
355
- control.x = point.x;
356
- control.y = point.y;
357
- path.lineTo(point.x, point.y);
358
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
359
- }
360
-
361
- break;
362
-
363
- case 'c':
364
- numbers = parseFloats(data);
365
-
366
- for (let j = 0, jl = numbers.length; j < jl; j += 6) {
367
- path.bezierCurveTo(point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3], point.x + numbers[j + 4], point.y + numbers[j + 5]);
368
- control.x = point.x + numbers[j + 2];
369
- control.y = point.y + numbers[j + 3];
370
- point.x += numbers[j + 4];
371
- point.y += numbers[j + 5];
372
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
373
- }
374
-
375
- break;
376
-
377
- case 's':
378
- numbers = parseFloats(data);
379
-
380
- for (let j = 0, jl = numbers.length; j < jl; j += 4) {
381
- path.bezierCurveTo(getReflection(point.x, control.x), getReflection(point.y, control.y), point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3]);
382
- control.x = point.x + numbers[j + 0];
383
- control.y = point.y + numbers[j + 1];
384
- point.x += numbers[j + 2];
385
- point.y += numbers[j + 3];
386
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
387
- }
388
-
389
- break;
390
-
391
- case 'q':
392
- numbers = parseFloats(data);
393
-
394
- for (let j = 0, jl = numbers.length; j < jl; j += 4) {
395
- path.quadraticCurveTo(point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3]);
396
- control.x = point.x + numbers[j + 0];
397
- control.y = point.y + numbers[j + 1];
398
- point.x += numbers[j + 2];
399
- point.y += numbers[j + 3];
400
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
401
- }
402
-
403
- break;
404
-
405
- case 't':
406
- numbers = parseFloats(data);
407
-
408
- for (let j = 0, jl = numbers.length; j < jl; j += 2) {
409
- const rx = getReflection(point.x, control.x);
410
- const ry = getReflection(point.y, control.y);
411
- path.quadraticCurveTo(rx, ry, point.x + numbers[j + 0], point.y + numbers[j + 1]);
412
- control.x = rx;
413
- control.y = ry;
414
- point.x = point.x + numbers[j + 0];
415
- point.y = point.y + numbers[j + 1];
416
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
417
- }
418
-
419
- break;
420
-
421
- case 'a':
422
- numbers = parseFloats(data, [3, 4], 7);
423
-
424
- for (let j = 0, jl = numbers.length; j < jl; j += 7) {
425
- // skip command if no displacement
426
- if (numbers[j + 5] == 0 && numbers[j + 6] == 0) continue;
427
- const start = point.clone();
428
- point.x += numbers[j + 5];
429
- point.y += numbers[j + 6];
430
- control.x = point.x;
431
- control.y = point.y;
432
- parseArcCommand(path, numbers[j], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], start, point);
433
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
434
- }
435
-
436
- break;
437
-
438
- case 'Z':
439
- case 'z':
440
- path.currentPath.autoClose = true;
441
-
442
- if (path.currentPath.curves.length > 0) {
443
- // Reset point to beginning of Path
444
- point.copy(firstPoint);
445
- path.currentPath.currentPoint.copy(point);
446
- isFirstPoint = true;
447
- }
448
-
449
- break;
450
-
451
- default:
452
- console.warn(command);
453
- } // console.log( type, parseFloats( data ), parseFloats( data ).length )
454
-
455
-
456
- doSetFirstPoint = false;
457
- }
458
-
459
- return path;
460
- }
461
-
462
- function parseCSSStylesheet(node) {
463
- if (!node.sheet || !node.sheet.cssRules || !node.sheet.cssRules.length) return;
464
-
465
- for (let i = 0; i < node.sheet.cssRules.length; i++) {
466
- const stylesheet = node.sheet.cssRules[i];
467
- if (stylesheet.type !== 1) continue;
468
- const selectorList = stylesheet.selectorText.split(/,/gm).filter(Boolean).map(i => i.trim());
469
-
470
- for (let j = 0; j < selectorList.length; j++) {
471
- stylesheets[selectorList[j]] = Object.assign(stylesheets[selectorList[j]] || {}, stylesheet.style);
472
- }
473
- }
474
- }
475
- /**
476
- * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
477
- * https://mortoray.com/2017/02/16/rendering-an-svg-elliptical-arc-as-bezier-curves/ Appendix: Endpoint to center arc conversion
478
- * From
479
- * rx ry x-axis-rotation large-arc-flag sweep-flag x y
480
- * To
481
- * aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation
482
- */
483
-
484
-
485
- function parseArcCommand(path, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, start, end) {
486
- if (rx == 0 || ry == 0) {
487
- // draw a line if either of the radii == 0
488
- path.lineTo(end.x, end.y);
489
- return;
490
- }
491
-
492
- x_axis_rotation = x_axis_rotation * Math.PI / 180; // Ensure radii are positive
493
-
494
- rx = Math.abs(rx);
495
- ry = Math.abs(ry); // Compute (x1', y1')
496
-
497
- const dx2 = (start.x - end.x) / 2.0;
498
- const dy2 = (start.y - end.y) / 2.0;
499
- const x1p = Math.cos(x_axis_rotation) * dx2 + Math.sin(x_axis_rotation) * dy2;
500
- const y1p = -Math.sin(x_axis_rotation) * dx2 + Math.cos(x_axis_rotation) * dy2; // Compute (cx', cy')
501
-
502
- let rxs = rx * rx;
503
- let rys = ry * ry;
504
- const x1ps = x1p * x1p;
505
- const y1ps = y1p * y1p; // Ensure radii are large enough
506
-
507
- const cr = x1ps / rxs + y1ps / rys;
508
-
509
- if (cr > 1) {
510
- // scale up rx,ry equally so cr == 1
511
- const s = Math.sqrt(cr);
512
- rx = s * rx;
513
- ry = s * ry;
514
- rxs = rx * rx;
515
- rys = ry * ry;
516
- }
517
-
518
- const dq = rxs * y1ps + rys * x1ps;
519
- const pq = (rxs * rys - dq) / dq;
520
- let q = Math.sqrt(Math.max(0, pq));
521
- if (large_arc_flag === sweep_flag) q = -q;
522
- const cxp = q * rx * y1p / ry;
523
- const cyp = -q * ry * x1p / rx; // Step 3: Compute (cx, cy) from (cx', cy')
524
-
525
- const cx = Math.cos(x_axis_rotation) * cxp - Math.sin(x_axis_rotation) * cyp + (start.x + end.x) / 2;
526
- const cy = Math.sin(x_axis_rotation) * cxp + Math.cos(x_axis_rotation) * cyp + (start.y + end.y) / 2; // Step 4: Compute θ1 and Δθ
527
-
528
- const theta = svgAngle(1, 0, (x1p - cxp) / rx, (y1p - cyp) / ry);
529
- const delta = svgAngle((x1p - cxp) / rx, (y1p - cyp) / ry, (-x1p - cxp) / rx, (-y1p - cyp) / ry) % (Math.PI * 2);
530
- path.currentPath.absellipse(cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation);
531
- }
532
-
533
- function svgAngle(ux, uy, vx, vy) {
534
- const dot = ux * vx + uy * vy;
535
- const len = Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy);
536
- let ang = Math.acos(Math.max(-1, Math.min(1, dot / len))); // floating point precision, slightly over values appear
537
-
538
- if (ux * vy - uy * vx < 0) ang = -ang;
539
- return ang;
540
- }
541
- /*
542
- * According to https://www.w3.org/TR/SVG/shapes.html#RectElementRXAttribute
543
- * rounded corner should be rendered to elliptical arc, but bezier curve does the job well enough
544
- */
545
-
546
-
547
- function parseRectNode(node) {
548
- const x = parseFloatWithUnits(node.getAttribute('x') || 0);
549
- const y = parseFloatWithUnits(node.getAttribute('y') || 0);
550
- const rx = parseFloatWithUnits(node.getAttribute('rx') || node.getAttribute('ry') || 0);
551
- const ry = parseFloatWithUnits(node.getAttribute('ry') || node.getAttribute('rx') || 0);
552
- const w = parseFloatWithUnits(node.getAttribute('width'));
553
- const h = parseFloatWithUnits(node.getAttribute('height')); // Ellipse arc to Bezier approximation Coefficient (Inversed). See:
554
- // https://spencermortensen.com/articles/bezier-circle/
555
-
556
- const bci = 1 - 0.551915024494;
557
- const path = new ShapePath(); // top left
558
-
559
- path.moveTo(x + rx, y); // top right
560
-
561
- path.lineTo(x + w - rx, y);
562
-
563
- if (rx !== 0 || ry !== 0) {
564
- path.bezierCurveTo(x + w - rx * bci, y, x + w, y + ry * bci, x + w, y + ry);
565
- } // bottom right
566
-
567
-
568
- path.lineTo(x + w, y + h - ry);
569
-
570
- if (rx !== 0 || ry !== 0) {
571
- path.bezierCurveTo(x + w, y + h - ry * bci, x + w - rx * bci, y + h, x + w - rx, y + h);
572
- } // bottom left
573
-
574
-
575
- path.lineTo(x + rx, y + h);
576
-
577
- if (rx !== 0 || ry !== 0) {
578
- path.bezierCurveTo(x + rx * bci, y + h, x, y + h - ry * bci, x, y + h - ry);
579
- } // back to top left
580
-
581
-
582
- path.lineTo(x, y + ry);
583
-
584
- if (rx !== 0 || ry !== 0) {
585
- path.bezierCurveTo(x, y + ry * bci, x + rx * bci, y, x + rx, y);
586
- }
587
-
588
- return path;
589
- }
590
-
591
- function parsePolygonNode(node) {
592
- function iterator(match, a, b) {
593
- const x = parseFloatWithUnits(a);
594
- const y = parseFloatWithUnits(b);
595
-
596
- if (index === 0) {
597
- path.moveTo(x, y);
598
- } else {
599
- path.lineTo(x, y);
600
- }
601
-
602
- index++;
603
- }
604
-
605
- const regex = /(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g;
606
- const path = new ShapePath();
607
- let index = 0;
608
- node.getAttribute('points').replace(regex, iterator);
609
- path.currentPath.autoClose = true;
610
- return path;
611
- }
612
-
613
- function parsePolylineNode(node) {
614
- function iterator(match, a, b) {
615
- const x = parseFloatWithUnits(a);
616
- const y = parseFloatWithUnits(b);
617
-
618
- if (index === 0) {
619
- path.moveTo(x, y);
620
- } else {
621
- path.lineTo(x, y);
622
- }
623
-
624
- index++;
625
- }
626
-
627
- const regex = /(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g;
628
- const path = new ShapePath();
629
- let index = 0;
630
- node.getAttribute('points').replace(regex, iterator);
631
- path.currentPath.autoClose = false;
632
- return path;
633
- }
634
-
635
- function parseCircleNode(node) {
636
- const x = parseFloatWithUnits(node.getAttribute('cx') || 0);
637
- const y = parseFloatWithUnits(node.getAttribute('cy') || 0);
638
- const r = parseFloatWithUnits(node.getAttribute('r') || 0);
639
- const subpath = new Path();
640
- subpath.absarc(x, y, r, 0, Math.PI * 2);
641
- const path = new ShapePath();
642
- path.subPaths.push(subpath);
643
- return path;
644
- }
645
-
646
- function parseEllipseNode(node) {
647
- const x = parseFloatWithUnits(node.getAttribute('cx') || 0);
648
- const y = parseFloatWithUnits(node.getAttribute('cy') || 0);
649
- const rx = parseFloatWithUnits(node.getAttribute('rx') || 0);
650
- const ry = parseFloatWithUnits(node.getAttribute('ry') || 0);
651
- const subpath = new Path();
652
- subpath.absellipse(x, y, rx, ry, 0, Math.PI * 2);
653
- const path = new ShapePath();
654
- path.subPaths.push(subpath);
655
- return path;
656
- }
657
-
658
- function parseLineNode(node) {
659
- const x1 = parseFloatWithUnits(node.getAttribute('x1') || 0);
660
- const y1 = parseFloatWithUnits(node.getAttribute('y1') || 0);
661
- const x2 = parseFloatWithUnits(node.getAttribute('x2') || 0);
662
- const y2 = parseFloatWithUnits(node.getAttribute('y2') || 0);
663
- const path = new ShapePath();
664
- path.moveTo(x1, y1);
665
- path.lineTo(x2, y2);
666
- path.currentPath.autoClose = false;
667
- return path;
668
- } //
669
-
670
-
671
- function parseStyle(node, style) {
672
- style = Object.assign({}, style); // clone style
673
-
674
- let stylesheetStyles = {};
675
-
676
- if (node.hasAttribute('class')) {
677
- const classSelectors = node.getAttribute('class').split(/\s/).filter(Boolean).map(i => i.trim());
678
-
679
- for (let i = 0; i < classSelectors.length; i++) {
680
- stylesheetStyles = Object.assign(stylesheetStyles, stylesheets['.' + classSelectors[i]]);
681
- }
682
- }
683
-
684
- if (node.hasAttribute('id')) {
685
- stylesheetStyles = Object.assign(stylesheetStyles, stylesheets['#' + node.getAttribute('id')]);
686
- }
687
-
688
- function addStyle(svgName, jsName, adjustFunction) {
689
- if (adjustFunction === undefined) {
690
- adjustFunction = function copy(v) {
691
- if (v.startsWith('url')) console.warn('SVGLoader: url access in attributes is not implemented.');
692
- return v;
693
- };
694
- }
695
-
696
- if (node.hasAttribute(svgName)) style[jsName] = adjustFunction(node.getAttribute(svgName));
697
- if (stylesheetStyles[svgName]) style[jsName] = adjustFunction(stylesheetStyles[svgName]);
698
- if (node.style && node.style[svgName] !== '') style[jsName] = adjustFunction(node.style[svgName]);
699
- }
700
-
701
- function clamp(v) {
702
- return Math.max(0, Math.min(1, parseFloatWithUnits(v)));
703
- }
704
-
705
- function positive(v) {
706
- return Math.max(0, parseFloatWithUnits(v));
707
- }
708
-
709
- addStyle('fill', 'fill');
710
- addStyle('fill-opacity', 'fillOpacity', clamp);
711
- addStyle('fill-rule', 'fillRule');
712
- addStyle('opacity', 'opacity', clamp);
713
- addStyle('stroke', 'stroke');
714
- addStyle('stroke-opacity', 'strokeOpacity', clamp);
715
- addStyle('stroke-width', 'strokeWidth', positive);
716
- addStyle('stroke-linejoin', 'strokeLineJoin');
717
- addStyle('stroke-linecap', 'strokeLineCap');
718
- addStyle('stroke-miterlimit', 'strokeMiterLimit', positive);
719
- addStyle('visibility', 'visibility');
720
- return style;
721
- } // http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
722
-
723
-
724
- function getReflection(a, b) {
725
- return a - (b - a);
726
- } // from https://github.com/ppvg/svg-numbers (MIT License)
727
-
728
-
729
- function parseFloats(input, flags, stride) {
730
- if (typeof input !== 'string') {
731
- throw new TypeError('Invalid input: ' + typeof input);
732
- } // Character groups
733
-
734
-
735
- const RE = {
736
- SEPARATOR: /[ \t\r\n\,.\-+]/,
737
- WHITESPACE: /[ \t\r\n]/,
738
- DIGIT: /[\d]/,
739
- SIGN: /[-+]/,
740
- POINT: /\./,
741
- COMMA: /,/,
742
- EXP: /e/i,
743
- FLAGS: /[01]/
744
- }; // States
745
-
746
- const SEP = 0;
747
- const INT = 1;
748
- const FLOAT = 2;
749
- const EXP = 3;
750
- let state = SEP;
751
- let seenComma = true;
752
- let number = '',
753
- exponent = '';
754
- const result = [];
755
-
756
- function throwSyntaxError(current, i, partial) {
757
- const error = new SyntaxError('Unexpected character "' + current + '" at index ' + i + '.');
758
- error.partial = partial;
759
- throw error;
760
- }
761
-
762
- function newNumber() {
763
- if (number !== '') {
764
- if (exponent === '') result.push(Number(number));else result.push(Number(number) * Math.pow(10, Number(exponent)));
765
- }
766
-
767
- number = '';
768
- exponent = '';
769
- }
770
-
771
- let current;
772
- const length = input.length;
773
-
774
- for (let i = 0; i < length; i++) {
775
- current = input[i]; // check for flags
776
-
777
- if (Array.isArray(flags) && flags.includes(result.length % stride) && RE.FLAGS.test(current)) {
778
- state = INT;
779
- number = current;
780
- newNumber();
781
- continue;
782
- } // parse until next number
783
-
784
-
785
- if (state === SEP) {
786
- // eat whitespace
787
- if (RE.WHITESPACE.test(current)) {
788
- continue;
789
- } // start new number
790
-
791
-
792
- if (RE.DIGIT.test(current) || RE.SIGN.test(current)) {
793
- state = INT;
794
- number = current;
795
- continue;
796
- }
797
-
798
- if (RE.POINT.test(current)) {
799
- state = FLOAT;
800
- number = current;
801
- continue;
802
- } // throw on double commas (e.g. "1, , 2")
803
-
804
-
805
- if (RE.COMMA.test(current)) {
806
- if (seenComma) {
807
- throwSyntaxError(current, i, result);
808
- }
809
-
810
- seenComma = true;
811
- }
812
- } // parse integer part
813
-
814
-
815
- if (state === INT) {
816
- if (RE.DIGIT.test(current)) {
817
- number += current;
818
- continue;
819
- }
820
-
821
- if (RE.POINT.test(current)) {
822
- number += current;
823
- state = FLOAT;
824
- continue;
825
- }
826
-
827
- if (RE.EXP.test(current)) {
828
- state = EXP;
829
- continue;
830
- } // throw on double signs ("-+1"), but not on sign as separator ("-1-2")
831
-
832
-
833
- if (RE.SIGN.test(current) && number.length === 1 && RE.SIGN.test(number[0])) {
834
- throwSyntaxError(current, i, result);
835
- }
836
- } // parse decimal part
837
-
838
-
839
- if (state === FLOAT) {
840
- if (RE.DIGIT.test(current)) {
841
- number += current;
842
- continue;
843
- }
844
-
845
- if (RE.EXP.test(current)) {
846
- state = EXP;
847
- continue;
848
- } // throw on double decimal points (e.g. "1..2")
849
-
850
-
851
- if (RE.POINT.test(current) && number[number.length - 1] === '.') {
852
- throwSyntaxError(current, i, result);
853
- }
854
- } // parse exponent part
855
-
856
-
857
- if (state === EXP) {
858
- if (RE.DIGIT.test(current)) {
859
- exponent += current;
860
- continue;
861
- }
862
-
863
- if (RE.SIGN.test(current)) {
864
- if (exponent === '') {
865
- exponent += current;
866
- continue;
867
- }
868
-
869
- if (exponent.length === 1 && RE.SIGN.test(exponent)) {
870
- throwSyntaxError(current, i, result);
871
- }
872
- }
873
- } // end of number
874
-
875
-
876
- if (RE.WHITESPACE.test(current)) {
877
- newNumber();
878
- state = SEP;
879
- seenComma = false;
880
- } else if (RE.COMMA.test(current)) {
881
- newNumber();
882
- state = SEP;
883
- seenComma = true;
884
- } else if (RE.SIGN.test(current)) {
885
- newNumber();
886
- state = INT;
887
- number = current;
888
- } else if (RE.POINT.test(current)) {
889
- newNumber();
890
- state = FLOAT;
891
- number = current;
892
- } else {
893
- throwSyntaxError(current, i, result);
894
- }
895
- } // add the last number found (if any)
896
-
897
-
898
- newNumber();
899
- return result;
900
- } // Units
901
-
902
-
903
- const units = ['mm', 'cm', 'in', 'pt', 'pc', 'px']; // Conversion: [ fromUnit ][ toUnit ] (-1 means dpi dependent)
904
-
905
- const unitConversion = {
906
- mm: {
907
- mm: 1,
908
- cm: 0.1,
909
- in: 1 / 25.4,
910
- pt: 72 / 25.4,
911
- pc: 6 / 25.4,
912
- px: -1
913
- },
914
- cm: {
915
- mm: 10,
916
- cm: 1,
917
- in: 1 / 2.54,
918
- pt: 72 / 2.54,
919
- pc: 6 / 2.54,
920
- px: -1
921
- },
922
- in: {
923
- mm: 25.4,
924
- cm: 2.54,
925
- in: 1,
926
- pt: 72,
927
- pc: 6,
928
- px: -1
929
- },
930
- pt: {
931
- mm: 25.4 / 72,
932
- cm: 2.54 / 72,
933
- in: 1 / 72,
934
- pt: 1,
935
- pc: 6 / 72,
936
- px: -1
937
- },
938
- pc: {
939
- mm: 25.4 / 6,
940
- cm: 2.54 / 6,
941
- in: 1 / 6,
942
- pt: 72 / 6,
943
- pc: 1,
944
- px: -1
945
- },
946
- px: {
947
- px: 1
948
- }
949
- };
950
-
951
- function parseFloatWithUnits(string) {
952
- let theUnit = 'px';
953
-
954
- if (typeof string === 'string' || string instanceof String) {
955
- for (let i = 0, n = units.length; i < n; i++) {
956
- const u = units[i];
957
-
958
- if (string.endsWith(u)) {
959
- theUnit = u;
960
- string = string.substring(0, string.length - u.length);
961
- break;
962
- }
963
- }
964
- }
965
-
966
- let scale = undefined;
967
-
968
- if (theUnit === 'px' && scope.defaultUnit !== 'px') {
969
- // Conversion scale from pixels to inches, then to default units
970
- scale = unitConversion['in'][scope.defaultUnit] / scope.defaultDPI;
971
- } else {
972
- scale = unitConversion[theUnit][scope.defaultUnit];
973
-
974
- if (scale < 0) {
975
- // Conversion scale to pixels
976
- scale = unitConversion[theUnit]['in'] * scope.defaultDPI;
977
- }
978
- }
979
-
980
- return scale * parseFloat(string);
981
- } // Transforms
982
-
983
-
984
- function getNodeTransform(node) {
985
- if (!(node.hasAttribute('transform') || node.nodeName === 'use' && (node.hasAttribute('x') || node.hasAttribute('y')))) {
986
- return null;
987
- }
988
-
989
- const transform = parseNodeTransform(node);
990
-
991
- if (transformStack.length > 0) {
992
- transform.premultiply(transformStack[transformStack.length - 1]);
993
- }
994
-
995
- currentTransform.copy(transform);
996
- transformStack.push(transform);
997
- return transform;
998
- }
999
-
1000
- function parseNodeTransform(node) {
1001
- const transform = new Matrix3();
1002
- const currentTransform = tempTransform0;
1003
-
1004
- if (node.nodeName === 'use' && (node.hasAttribute('x') || node.hasAttribute('y'))) {
1005
- const tx = parseFloatWithUnits(node.getAttribute('x'));
1006
- const ty = parseFloatWithUnits(node.getAttribute('y'));
1007
- transform.translate(tx, ty);
1008
- }
1009
-
1010
- if (node.hasAttribute('transform')) {
1011
- const transformsTexts = node.getAttribute('transform').split(')');
1012
-
1013
- for (let tIndex = transformsTexts.length - 1; tIndex >= 0; tIndex--) {
1014
- const transformText = transformsTexts[tIndex].trim();
1015
- if (transformText === '') continue;
1016
- const openParPos = transformText.indexOf('(');
1017
- const closeParPos = transformText.length;
1018
-
1019
- if (openParPos > 0 && openParPos < closeParPos) {
1020
- const transformType = transformText.substr(0, openParPos);
1021
- const array = parseFloats(transformText.substr(openParPos + 1, closeParPos - openParPos - 1));
1022
- currentTransform.identity();
1023
-
1024
- switch (transformType) {
1025
- case 'translate':
1026
- if (array.length >= 1) {
1027
- const tx = array[0];
1028
- let ty = tx;
1029
-
1030
- if (array.length >= 2) {
1031
- ty = array[1];
1032
- }
1033
-
1034
- currentTransform.translate(tx, ty);
1035
- }
1036
-
1037
- break;
1038
-
1039
- case 'rotate':
1040
- if (array.length >= 1) {
1041
- let angle = 0;
1042
- let cx = 0;
1043
- let cy = 0; // Angle
1044
-
1045
- angle = -array[0] * Math.PI / 180;
1046
-
1047
- if (array.length >= 3) {
1048
- // Center x, y
1049
- cx = array[1];
1050
- cy = array[2];
1051
- } // Rotate around center (cx, cy)
1052
-
1053
-
1054
- tempTransform1.identity().translate(-cx, -cy);
1055
- tempTransform2.identity().rotate(angle);
1056
- tempTransform3.multiplyMatrices(tempTransform2, tempTransform1);
1057
- tempTransform1.identity().translate(cx, cy);
1058
- currentTransform.multiplyMatrices(tempTransform1, tempTransform3);
1059
- }
1060
-
1061
- break;
1062
-
1063
- case 'scale':
1064
- if (array.length >= 1) {
1065
- const scaleX = array[0];
1066
- let scaleY = scaleX;
1067
-
1068
- if (array.length >= 2) {
1069
- scaleY = array[1];
1070
- }
1071
-
1072
- currentTransform.scale(scaleX, scaleY);
1073
- }
1074
-
1075
- break;
1076
-
1077
- case 'skewX':
1078
- if (array.length === 1) {
1079
- currentTransform.set(1, Math.tan(array[0] * Math.PI / 180), 0, 0, 1, 0, 0, 0, 1);
1080
- }
1081
-
1082
- break;
1083
-
1084
- case 'skewY':
1085
- if (array.length === 1) {
1086
- currentTransform.set(1, 0, 0, Math.tan(array[0] * Math.PI / 180), 1, 0, 0, 0, 1);
1087
- }
1088
-
1089
- break;
1090
-
1091
- case 'matrix':
1092
- if (array.length === 6) {
1093
- currentTransform.set(array[0], array[2], array[4], array[1], array[3], array[5], 0, 0, 1);
1094
- }
1095
-
1096
- break;
1097
- }
1098
- }
1099
-
1100
- transform.premultiply(currentTransform);
1101
- }
1102
- }
1103
-
1104
- return transform;
1105
- }
1106
-
1107
- function transformPath(path, m) {
1108
- function transfVec2(v2) {
1109
- tempV3.set(v2.x, v2.y, 1).applyMatrix3(m);
1110
- v2.set(tempV3.x, tempV3.y);
1111
- }
1112
-
1113
- const isRotated = isTransformRotated(m);
1114
- const subPaths = path.subPaths;
1115
-
1116
- for (let i = 0, n = subPaths.length; i < n; i++) {
1117
- const subPath = subPaths[i];
1118
- const curves = subPath.curves;
1119
-
1120
- for (let j = 0; j < curves.length; j++) {
1121
- const curve = curves[j];
1122
-
1123
- if (curve.isLineCurve) {
1124
- transfVec2(curve.v1);
1125
- transfVec2(curve.v2);
1126
- } else if (curve.isCubicBezierCurve) {
1127
- transfVec2(curve.v0);
1128
- transfVec2(curve.v1);
1129
- transfVec2(curve.v2);
1130
- transfVec2(curve.v3);
1131
- } else if (curve.isQuadraticBezierCurve) {
1132
- transfVec2(curve.v0);
1133
- transfVec2(curve.v1);
1134
- transfVec2(curve.v2);
1135
- } else if (curve.isEllipseCurve) {
1136
- if (isRotated) {
1137
- console.warn('SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.');
1138
- }
1139
-
1140
- tempV2.set(curve.aX, curve.aY);
1141
- transfVec2(tempV2);
1142
- curve.aX = tempV2.x;
1143
- curve.aY = tempV2.y;
1144
- curve.xRadius *= getTransformScaleX(m);
1145
- curve.yRadius *= getTransformScaleY(m);
1146
- }
1147
- }
1148
- }
1149
- }
1150
-
1151
- function isTransformRotated(m) {
1152
- return m.elements[1] !== 0 || m.elements[3] !== 0;
1153
- }
1154
-
1155
- function getTransformScaleX(m) {
1156
- const te = m.elements;
1157
- return Math.sqrt(te[0] * te[0] + te[1] * te[1]);
1158
- }
1159
-
1160
- function getTransformScaleY(m) {
1161
- const te = m.elements;
1162
- return Math.sqrt(te[3] * te[3] + te[4] * te[4]);
1163
- } //
1164
-
1165
-
1166
- const paths = [];
1167
- const stylesheets = {};
1168
- const transformStack = [];
1169
- const tempTransform0 = new Matrix3();
1170
- const tempTransform1 = new Matrix3();
1171
- const tempTransform2 = new Matrix3();
1172
- const tempTransform3 = new Matrix3();
1173
- const tempV2 = new Vector2();
1174
- const tempV3 = new Vector3();
1175
- const currentTransform = new Matrix3();
1176
- const xml = new DOMParser().parseFromString(text, 'image/svg+xml'); // application/xml
1177
-
1178
- parseNode(xml.documentElement, {
1179
- fill: '#000',
1180
- fillOpacity: 1,
1181
- strokeOpacity: 1,
1182
- strokeWidth: 1,
1183
- strokeLineJoin: 'miter',
1184
- strokeLineCap: 'butt',
1185
- strokeMiterLimit: 4
1186
- });
1187
- const data = {
1188
- paths: paths,
1189
- xml: xml.documentElement
1190
- }; // console.log( paths );
1191
-
1192
- return data;
1193
- }
1194
-
1195
- static createShapes(shapePath) {
1196
- // Param shapePath: a shapepath as returned by the parse function of this class
1197
- // Returns Shape object
1198
- const BIGNUMBER = 999999999;
1199
- const IntersectionLocationType = {
1200
- ORIGIN: 0,
1201
- DESTINATION: 1,
1202
- BETWEEN: 2,
1203
- LEFT: 3,
1204
- RIGHT: 4,
1205
- BEHIND: 5,
1206
- BEYOND: 6
1207
- };
1208
- const classifyResult = {
1209
- loc: IntersectionLocationType.ORIGIN,
1210
- t: 0
1211
- };
1212
-
1213
- function findEdgeIntersection(a0, a1, b0, b1) {
1214
- const x1 = a0.x;
1215
- const x2 = a1.x;
1216
- const x3 = b0.x;
1217
- const x4 = b1.x;
1218
- const y1 = a0.y;
1219
- const y2 = a1.y;
1220
- const y3 = b0.y;
1221
- const y4 = b1.y;
1222
- const nom1 = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);
1223
- const nom2 = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);
1224
- const denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);
1225
- const t1 = nom1 / denom;
1226
- const t2 = nom2 / denom;
1227
-
1228
- if (denom === 0 && nom1 !== 0 || t1 <= 0 || t1 >= 1 || t2 < 0 || t2 > 1) {
1229
- //1. lines are parallel or edges don't intersect
1230
- return null;
1231
- } else if (nom1 === 0 && denom === 0) {
1232
- //2. lines are colinear
1233
- //check if endpoints of edge2 (b0-b1) lies on edge1 (a0-a1)
1234
- for (let i = 0; i < 2; i++) {
1235
- classifyPoint(i === 0 ? b0 : b1, a0, a1); //find position of this endpoints relatively to edge1
1236
-
1237
- if (classifyResult.loc == IntersectionLocationType.ORIGIN) {
1238
- const point = i === 0 ? b0 : b1;
1239
- return {
1240
- x: point.x,
1241
- y: point.y,
1242
- t: classifyResult.t
1243
- };
1244
- } else if (classifyResult.loc == IntersectionLocationType.BETWEEN) {
1245
- const x = +(x1 + classifyResult.t * (x2 - x1)).toPrecision(10);
1246
- const y = +(y1 + classifyResult.t * (y2 - y1)).toPrecision(10);
1247
- return {
1248
- x: x,
1249
- y: y,
1250
- t: classifyResult.t
1251
- };
1252
- }
1253
- }
1254
-
1255
- return null;
1256
- } else {
1257
- //3. edges intersect
1258
- for (let i = 0; i < 2; i++) {
1259
- classifyPoint(i === 0 ? b0 : b1, a0, a1);
1260
-
1261
- if (classifyResult.loc == IntersectionLocationType.ORIGIN) {
1262
- const point = i === 0 ? b0 : b1;
1263
- return {
1264
- x: point.x,
1265
- y: point.y,
1266
- t: classifyResult.t
1267
- };
1268
- }
1269
- }
1270
-
1271
- const x = +(x1 + t1 * (x2 - x1)).toPrecision(10);
1272
- const y = +(y1 + t1 * (y2 - y1)).toPrecision(10);
1273
- return {
1274
- x: x,
1275
- y: y,
1276
- t: t1
1277
- };
1278
- }
1279
- }
1280
-
1281
- function classifyPoint(p, edgeStart, edgeEnd) {
1282
- const ax = edgeEnd.x - edgeStart.x;
1283
- const ay = edgeEnd.y - edgeStart.y;
1284
- const bx = p.x - edgeStart.x;
1285
- const by = p.y - edgeStart.y;
1286
- const sa = ax * by - bx * ay;
1287
-
1288
- if (p.x === edgeStart.x && p.y === edgeStart.y) {
1289
- classifyResult.loc = IntersectionLocationType.ORIGIN;
1290
- classifyResult.t = 0;
1291
- return;
1292
- }
1293
-
1294
- if (p.x === edgeEnd.x && p.y === edgeEnd.y) {
1295
- classifyResult.loc = IntersectionLocationType.DESTINATION;
1296
- classifyResult.t = 1;
1297
- return;
1298
- }
1299
-
1300
- if (sa < -Number.EPSILON) {
1301
- classifyResult.loc = IntersectionLocationType.LEFT;
1302
- return;
1303
- }
1304
-
1305
- if (sa > Number.EPSILON) {
1306
- classifyResult.loc = IntersectionLocationType.RIGHT;
1307
- return;
1308
- }
1309
-
1310
- if (ax * bx < 0 || ay * by < 0) {
1311
- classifyResult.loc = IntersectionLocationType.BEHIND;
1312
- return;
1313
- }
1314
-
1315
- if (Math.sqrt(ax * ax + ay * ay) < Math.sqrt(bx * bx + by * by)) {
1316
- classifyResult.loc = IntersectionLocationType.BEYOND;
1317
- return;
1318
- }
1319
-
1320
- let t;
1321
-
1322
- if (ax !== 0) {
1323
- t = bx / ax;
1324
- } else {
1325
- t = by / ay;
1326
- }
1327
-
1328
- classifyResult.loc = IntersectionLocationType.BETWEEN;
1329
- classifyResult.t = t;
1330
- }
1331
-
1332
- function getIntersections(path1, path2) {
1333
- const intersectionsRaw = [];
1334
- const intersections = [];
1335
-
1336
- for (let index = 1; index < path1.length; index++) {
1337
- const path1EdgeStart = path1[index - 1];
1338
- const path1EdgeEnd = path1[index];
1339
-
1340
- for (let index2 = 1; index2 < path2.length; index2++) {
1341
- const path2EdgeStart = path2[index2 - 1];
1342
- const path2EdgeEnd = path2[index2];
1343
- const intersection = findEdgeIntersection(path1EdgeStart, path1EdgeEnd, path2EdgeStart, path2EdgeEnd);
1344
-
1345
- if (intersection !== null && intersectionsRaw.find(i => i.t <= intersection.t + Number.EPSILON && i.t >= intersection.t - Number.EPSILON) === undefined) {
1346
- intersectionsRaw.push(intersection);
1347
- intersections.push(new Vector2(intersection.x, intersection.y));
1348
- }
1349
- }
1350
- }
1351
-
1352
- return intersections;
1353
- }
1354
-
1355
- function getScanlineIntersections(scanline, boundingBox, paths) {
1356
- const center = new Vector2();
1357
- boundingBox.getCenter(center);
1358
- const allIntersections = [];
1359
- paths.forEach(path => {
1360
- // check if the center of the bounding box is in the bounding box of the paths.
1361
- // this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
1362
- // if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
1363
- if (path.boundingBox.containsPoint(center)) {
1364
- const intersections = getIntersections(scanline, path.points);
1365
- intersections.forEach(p => {
1366
- allIntersections.push({
1367
- identifier: path.identifier,
1368
- isCW: path.isCW,
1369
- point: p
1370
- });
1371
- });
1372
- }
1373
- });
1374
- allIntersections.sort((i1, i2) => {
1375
- return i1.point.x - i2.point.x;
1376
- });
1377
- return allIntersections;
1378
- }
1379
-
1380
- function isHoleTo(simplePath, allPaths, scanlineMinX, scanlineMaxX, _fillRule) {
1381
- if (_fillRule === null || _fillRule === undefined || _fillRule === '') {
1382
- _fillRule = 'nonzero';
1383
- }
1384
-
1385
- const centerBoundingBox = new Vector2();
1386
- simplePath.boundingBox.getCenter(centerBoundingBox);
1387
- const scanline = [new Vector2(scanlineMinX, centerBoundingBox.y), new Vector2(scanlineMaxX, centerBoundingBox.y)];
1388
- const scanlineIntersections = getScanlineIntersections(scanline, simplePath.boundingBox, allPaths);
1389
- scanlineIntersections.sort((i1, i2) => {
1390
- return i1.point.x - i2.point.x;
1391
- });
1392
- const baseIntersections = [];
1393
- const otherIntersections = [];
1394
- scanlineIntersections.forEach(i => {
1395
- if (i.identifier === simplePath.identifier) {
1396
- baseIntersections.push(i);
1397
- } else {
1398
- otherIntersections.push(i);
1399
- }
1400
- });
1401
- const firstXOfPath = baseIntersections[0].point.x; // build up the path hierarchy
1402
-
1403
- const stack = [];
1404
- let i = 0;
1405
-
1406
- while (i < otherIntersections.length && otherIntersections[i].point.x < firstXOfPath) {
1407
- if (stack.length > 0 && stack[stack.length - 1] === otherIntersections[i].identifier) {
1408
- stack.pop();
1409
- } else {
1410
- stack.push(otherIntersections[i].identifier);
1411
- }
1412
-
1413
- i++;
1414
- }
1415
-
1416
- stack.push(simplePath.identifier);
1417
-
1418
- if (_fillRule === 'evenodd') {
1419
- const isHole = stack.length % 2 === 0 ? true : false;
1420
- const isHoleFor = stack[stack.length - 2];
1421
- return {
1422
- identifier: simplePath.identifier,
1423
- isHole: isHole,
1424
- for: isHoleFor
1425
- };
1426
- } else if (_fillRule === 'nonzero') {
1427
- // check if path is a hole by counting the amount of paths with alternating rotations it has to cross.
1428
- let isHole = true;
1429
- let isHoleFor = null;
1430
- let lastCWValue = null;
1431
-
1432
- for (let i = 0; i < stack.length; i++) {
1433
- const identifier = stack[i];
1434
-
1435
- if (isHole) {
1436
- lastCWValue = allPaths[identifier].isCW;
1437
- isHole = false;
1438
- isHoleFor = identifier;
1439
- } else if (lastCWValue !== allPaths[identifier].isCW) {
1440
- lastCWValue = allPaths[identifier].isCW;
1441
- isHole = true;
1442
- }
1443
- }
1444
-
1445
- return {
1446
- identifier: simplePath.identifier,
1447
- isHole: isHole,
1448
- for: isHoleFor
1449
- };
1450
- } else {
1451
- console.warn('fill-rule: "' + _fillRule + '" is currently not implemented.');
1452
- }
1453
- } // check for self intersecting paths
1454
- // TODO
1455
- // check intersecting paths
1456
- // TODO
1457
- // prepare paths for hole detection
1458
-
1459
-
1460
- let identifier = 0;
1461
- let scanlineMinX = BIGNUMBER;
1462
- let scanlineMaxX = -BIGNUMBER;
1463
- let simplePaths = shapePath.subPaths.map(p => {
1464
- const points = p.getPoints();
1465
- let maxY = -BIGNUMBER;
1466
- let minY = BIGNUMBER;
1467
- let maxX = -BIGNUMBER;
1468
- let minX = BIGNUMBER; //points.forEach(p => p.y *= -1);
1469
-
1470
- for (let i = 0; i < points.length; i++) {
1471
- const p = points[i];
1472
-
1473
- if (p.y > maxY) {
1474
- maxY = p.y;
1475
- }
1476
-
1477
- if (p.y < minY) {
1478
- minY = p.y;
1479
- }
1480
-
1481
- if (p.x > maxX) {
1482
- maxX = p.x;
1483
- }
1484
-
1485
- if (p.x < minX) {
1486
- minX = p.x;
1487
- }
1488
- } //
1489
-
1490
-
1491
- if (scanlineMaxX <= maxX) {
1492
- scanlineMaxX = maxX + 1;
1493
- }
1494
-
1495
- if (scanlineMinX >= minX) {
1496
- scanlineMinX = minX - 1;
1497
- }
1498
-
1499
- return {
1500
- curves: p.curves,
1501
- points: points,
1502
- isCW: ShapeUtils.isClockWise(points),
1503
- identifier: identifier++,
1504
- boundingBox: new Box2(new Vector2(minX, minY), new Vector2(maxX, maxY))
1505
- };
1506
- });
1507
- simplePaths = simplePaths.filter(sp => sp.points.length > 1); // check if path is solid or a hole
1508
-
1509
- const isAHole = simplePaths.map(p => isHoleTo(p, simplePaths, scanlineMinX, scanlineMaxX, shapePath.userData.style.fillRule));
1510
- const shapesToReturn = [];
1511
- simplePaths.forEach(p => {
1512
- const amIAHole = isAHole[p.identifier];
1513
-
1514
- if (!amIAHole.isHole) {
1515
- const shape = new Shape();
1516
- shape.curves = p.curves;
1517
- const holes = isAHole.filter(h => h.isHole && h.for === p.identifier);
1518
- holes.forEach(h => {
1519
- const hole = simplePaths[h.identifier];
1520
- const path = new Path();
1521
- path.curves = hole.curves;
1522
- shape.holes.push(path);
1523
- });
1524
- shapesToReturn.push(shape);
1525
- }
1526
- });
1527
- return shapesToReturn;
1528
- }
1529
-
1530
- static getStrokeStyle(width, color, lineJoin, lineCap, miterLimit) {
1531
- // Param width: Stroke width
1532
- // Param color: As returned by THREE.Color.getStyle()
1533
- // Param lineJoin: One of "round", "bevel", "miter" or "miter-limit"
1534
- // Param lineCap: One of "round", "square" or "butt"
1535
- // Param miterLimit: Maximum join length, in multiples of the "width" parameter (join is truncated if it exceeds that distance)
1536
- // Returns style object
1537
- width = width !== undefined ? width : 1;
1538
- color = color !== undefined ? color : '#000';
1539
- lineJoin = lineJoin !== undefined ? lineJoin : 'miter';
1540
- lineCap = lineCap !== undefined ? lineCap : 'butt';
1541
- miterLimit = miterLimit !== undefined ? miterLimit : 4;
1542
- return {
1543
- strokeColor: color,
1544
- strokeWidth: width,
1545
- strokeLineJoin: lineJoin,
1546
- strokeLineCap: lineCap,
1547
- strokeMiterLimit: miterLimit
1548
- };
1549
- }
1550
-
1551
- static pointsToStroke(points, style, arcDivisions, minDistance) {
1552
- // Generates a stroke with some witdh around the given path.
1553
- // The path can be open or closed (last point equals to first point)
1554
- // Param points: Array of Vector2D (the path). Minimum 2 points.
1555
- // Param style: Object with SVG properties as returned by SVGLoader.getStrokeStyle(), or SVGLoader.parse() in the path.userData.style object
1556
- // Params arcDivisions: Arc divisions for round joins and endcaps. (Optional)
1557
- // Param minDistance: Points closer to this distance will be merged. (Optional)
1558
- // Returns BufferGeometry with stroke triangles (In plane z = 0). UV coordinates are generated ('u' along path. 'v' across it, from left to right)
1559
- const vertices = [];
1560
- const normals = [];
1561
- const uvs = [];
1562
-
1563
- if (SVGLoader.pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs) === 0) {
1564
- return null;
1565
- }
1566
-
1567
- const geometry = new BufferGeometry();
1568
- geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
1569
- geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
1570
- geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
1571
- return geometry;
1572
- }
1573
-
1574
- static pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs, vertexOffset) {
1575
- // This function can be called to update existing arrays or buffers.
1576
- // Accepts same parameters as pointsToStroke, plus the buffers and optional offset.
1577
- // Param vertexOffset: Offset vertices to start writing in the buffers (3 elements/vertex for vertices and normals, and 2 elements/vertex for uvs)
1578
- // Returns number of written vertices / normals / uvs pairs
1579
- // if 'vertices' parameter is undefined no triangles will be generated, but the returned vertices count will still be valid (useful to preallocate the buffers)
1580
- // 'normals' and 'uvs' buffers are optional
1581
- const tempV2_1 = new Vector2();
1582
- const tempV2_2 = new Vector2();
1583
- const tempV2_3 = new Vector2();
1584
- const tempV2_4 = new Vector2();
1585
- const tempV2_5 = new Vector2();
1586
- const tempV2_6 = new Vector2();
1587
- const tempV2_7 = new Vector2();
1588
- const lastPointL = new Vector2();
1589
- const lastPointR = new Vector2();
1590
- const point0L = new Vector2();
1591
- const point0R = new Vector2();
1592
- const currentPointL = new Vector2();
1593
- const currentPointR = new Vector2();
1594
- const nextPointL = new Vector2();
1595
- const nextPointR = new Vector2();
1596
- const innerPoint = new Vector2();
1597
- const outerPoint = new Vector2();
1598
- arcDivisions = arcDivisions !== undefined ? arcDivisions : 12;
1599
- minDistance = minDistance !== undefined ? minDistance : 0.001;
1600
- vertexOffset = vertexOffset !== undefined ? vertexOffset : 0; // First ensure there are no duplicated points
1601
-
1602
- points = removeDuplicatedPoints(points);
1603
- const numPoints = points.length;
1604
- if (numPoints < 2) return 0;
1605
- const isClosed = points[0].equals(points[numPoints - 1]);
1606
- let currentPoint;
1607
- let previousPoint = points[0];
1608
- let nextPoint;
1609
- const strokeWidth2 = style.strokeWidth / 2;
1610
- const deltaU = 1 / (numPoints - 1);
1611
- let u0 = 0,
1612
- u1;
1613
- let innerSideModified;
1614
- let joinIsOnLeftSide;
1615
- let isMiter;
1616
- let initialJoinIsOnLeftSide = false;
1617
- let numVertices = 0;
1618
- let currentCoordinate = vertexOffset * 3;
1619
- let currentCoordinateUV = vertexOffset * 2; // Get initial left and right stroke points
1620
-
1621
- getNormal(points[0], points[1], tempV2_1).multiplyScalar(strokeWidth2);
1622
- lastPointL.copy(points[0]).sub(tempV2_1);
1623
- lastPointR.copy(points[0]).add(tempV2_1);
1624
- point0L.copy(lastPointL);
1625
- point0R.copy(lastPointR);
1626
-
1627
- for (let iPoint = 1; iPoint < numPoints; iPoint++) {
1628
- currentPoint = points[iPoint]; // Get next point
1629
-
1630
- if (iPoint === numPoints - 1) {
1631
- if (isClosed) {
1632
- // Skip duplicated initial point
1633
- nextPoint = points[1];
1634
- } else {
1635
- nextPoint = undefined;
1636
- }
1637
- } else {
1638
- nextPoint = points[iPoint + 1];
1639
- } // Normal of previous segment in tempV2_1
1640
-
1641
-
1642
- const normal1 = tempV2_1;
1643
- getNormal(previousPoint, currentPoint, normal1);
1644
- tempV2_3.copy(normal1).multiplyScalar(strokeWidth2);
1645
- currentPointL.copy(currentPoint).sub(tempV2_3);
1646
- currentPointR.copy(currentPoint).add(tempV2_3);
1647
- u1 = u0 + deltaU;
1648
- innerSideModified = false;
1649
-
1650
- if (nextPoint !== undefined) {
1651
- // Normal of next segment in tempV2_2
1652
- getNormal(currentPoint, nextPoint, tempV2_2);
1653
- tempV2_3.copy(tempV2_2).multiplyScalar(strokeWidth2);
1654
- nextPointL.copy(currentPoint).sub(tempV2_3);
1655
- nextPointR.copy(currentPoint).add(tempV2_3);
1656
- joinIsOnLeftSide = true;
1657
- tempV2_3.subVectors(nextPoint, previousPoint);
1658
-
1659
- if (normal1.dot(tempV2_3) < 0) {
1660
- joinIsOnLeftSide = false;
1661
- }
1662
-
1663
- if (iPoint === 1) initialJoinIsOnLeftSide = joinIsOnLeftSide;
1664
- tempV2_3.subVectors(nextPoint, currentPoint);
1665
- tempV2_3.normalize();
1666
- const dot = Math.abs(normal1.dot(tempV2_3)); // If path is straight, don't create join
1667
-
1668
- if (dot !== 0) {
1669
- // Compute inner and outer segment intersections
1670
- const miterSide = strokeWidth2 / dot;
1671
- tempV2_3.multiplyScalar(-miterSide);
1672
- tempV2_4.subVectors(currentPoint, previousPoint);
1673
- tempV2_5.copy(tempV2_4).setLength(miterSide).add(tempV2_3);
1674
- innerPoint.copy(tempV2_5).negate();
1675
- const miterLength2 = tempV2_5.length();
1676
- const segmentLengthPrev = tempV2_4.length();
1677
- tempV2_4.divideScalar(segmentLengthPrev);
1678
- tempV2_6.subVectors(nextPoint, currentPoint);
1679
- const segmentLengthNext = tempV2_6.length();
1680
- tempV2_6.divideScalar(segmentLengthNext); // Check that previous and next segments doesn't overlap with the innerPoint of intersection
1681
-
1682
- if (tempV2_4.dot(innerPoint) < segmentLengthPrev && tempV2_6.dot(innerPoint) < segmentLengthNext) {
1683
- innerSideModified = true;
1684
- }
1685
-
1686
- outerPoint.copy(tempV2_5).add(currentPoint);
1687
- innerPoint.add(currentPoint);
1688
- isMiter = false;
1689
-
1690
- if (innerSideModified) {
1691
- if (joinIsOnLeftSide) {
1692
- nextPointR.copy(innerPoint);
1693
- currentPointR.copy(innerPoint);
1694
- } else {
1695
- nextPointL.copy(innerPoint);
1696
- currentPointL.copy(innerPoint);
1697
- }
1698
- } else {
1699
- // The segment triangles are generated here if there was overlapping
1700
- makeSegmentTriangles();
1701
- }
1702
-
1703
- switch (style.strokeLineJoin) {
1704
- case 'bevel':
1705
- makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1);
1706
- break;
1707
-
1708
- case 'round':
1709
- // Segment triangles
1710
- createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); // Join triangles
1711
-
1712
- if (joinIsOnLeftSide) {
1713
- makeCircularSector(currentPoint, currentPointL, nextPointL, u1, 0);
1714
- } else {
1715
- makeCircularSector(currentPoint, nextPointR, currentPointR, u1, 1);
1716
- }
1717
-
1718
- break;
1719
-
1720
- case 'miter':
1721
- case 'miter-clip':
1722
- default:
1723
- const miterFraction = strokeWidth2 * style.strokeMiterLimit / miterLength2;
1724
-
1725
- if (miterFraction < 1) {
1726
- // The join miter length exceeds the miter limit
1727
- if (style.strokeLineJoin !== 'miter-clip') {
1728
- makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1);
1729
- break;
1730
- } else {
1731
- // Segment triangles
1732
- createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); // Miter-clip join triangles
1733
-
1734
- if (joinIsOnLeftSide) {
1735
- tempV2_6.subVectors(outerPoint, currentPointL).multiplyScalar(miterFraction).add(currentPointL);
1736
- tempV2_7.subVectors(outerPoint, nextPointL).multiplyScalar(miterFraction).add(nextPointL);
1737
- addVertex(currentPointL, u1, 0);
1738
- addVertex(tempV2_6, u1, 0);
1739
- addVertex(currentPoint, u1, 0.5);
1740
- addVertex(currentPoint, u1, 0.5);
1741
- addVertex(tempV2_6, u1, 0);
1742
- addVertex(tempV2_7, u1, 0);
1743
- addVertex(currentPoint, u1, 0.5);
1744
- addVertex(tempV2_7, u1, 0);
1745
- addVertex(nextPointL, u1, 0);
1746
- } else {
1747
- tempV2_6.subVectors(outerPoint, currentPointR).multiplyScalar(miterFraction).add(currentPointR);
1748
- tempV2_7.subVectors(outerPoint, nextPointR).multiplyScalar(miterFraction).add(nextPointR);
1749
- addVertex(currentPointR, u1, 1);
1750
- addVertex(tempV2_6, u1, 1);
1751
- addVertex(currentPoint, u1, 0.5);
1752
- addVertex(currentPoint, u1, 0.5);
1753
- addVertex(tempV2_6, u1, 1);
1754
- addVertex(tempV2_7, u1, 1);
1755
- addVertex(currentPoint, u1, 0.5);
1756
- addVertex(tempV2_7, u1, 1);
1757
- addVertex(nextPointR, u1, 1);
1758
- }
1759
- }
1760
- } else {
1761
- // Miter join segment triangles
1762
- if (innerSideModified) {
1763
- // Optimized segment + join triangles
1764
- if (joinIsOnLeftSide) {
1765
- addVertex(lastPointR, u0, 1);
1766
- addVertex(lastPointL, u0, 0);
1767
- addVertex(outerPoint, u1, 0);
1768
- addVertex(lastPointR, u0, 1);
1769
- addVertex(outerPoint, u1, 0);
1770
- addVertex(innerPoint, u1, 1);
1771
- } else {
1772
- addVertex(lastPointR, u0, 1);
1773
- addVertex(lastPointL, u0, 0);
1774
- addVertex(outerPoint, u1, 1);
1775
- addVertex(lastPointL, u0, 0);
1776
- addVertex(innerPoint, u1, 0);
1777
- addVertex(outerPoint, u1, 1);
1778
- }
1779
-
1780
- if (joinIsOnLeftSide) {
1781
- nextPointL.copy(outerPoint);
1782
- } else {
1783
- nextPointR.copy(outerPoint);
1784
- }
1785
- } else {
1786
- // Add extra miter join triangles
1787
- if (joinIsOnLeftSide) {
1788
- addVertex(currentPointL, u1, 0);
1789
- addVertex(outerPoint, u1, 0);
1790
- addVertex(currentPoint, u1, 0.5);
1791
- addVertex(currentPoint, u1, 0.5);
1792
- addVertex(outerPoint, u1, 0);
1793
- addVertex(nextPointL, u1, 0);
1794
- } else {
1795
- addVertex(currentPointR, u1, 1);
1796
- addVertex(outerPoint, u1, 1);
1797
- addVertex(currentPoint, u1, 0.5);
1798
- addVertex(currentPoint, u1, 0.5);
1799
- addVertex(outerPoint, u1, 1);
1800
- addVertex(nextPointR, u1, 1);
1801
- }
1802
- }
1803
-
1804
- isMiter = true;
1805
- }
1806
-
1807
- break;
1808
- }
1809
- } else {
1810
- // The segment triangles are generated here when two consecutive points are collinear
1811
- makeSegmentTriangles();
1812
- }
1813
- } else {
1814
- // The segment triangles are generated here if it is the ending segment
1815
- makeSegmentTriangles();
1816
- }
1817
-
1818
- if (!isClosed && iPoint === numPoints - 1) {
1819
- // Start line endcap
1820
- addCapGeometry(points[0], point0L, point0R, joinIsOnLeftSide, true, u0);
1821
- } // Increment loop variables
1822
-
1823
-
1824
- u0 = u1;
1825
- previousPoint = currentPoint;
1826
- lastPointL.copy(nextPointL);
1827
- lastPointR.copy(nextPointR);
1828
- }
1829
-
1830
- if (!isClosed) {
1831
- // Ending line endcap
1832
- addCapGeometry(currentPoint, currentPointL, currentPointR, joinIsOnLeftSide, false, u1);
1833
- } else if (innerSideModified && vertices) {
1834
- // Modify path first segment vertices to adjust to the segments inner and outer intersections
1835
- let lastOuter = outerPoint;
1836
- let lastInner = innerPoint;
1837
-
1838
- if (initialJoinIsOnLeftSide !== joinIsOnLeftSide) {
1839
- lastOuter = innerPoint;
1840
- lastInner = outerPoint;
1841
- }
1842
-
1843
- if (joinIsOnLeftSide) {
1844
- if (isMiter || initialJoinIsOnLeftSide) {
1845
- lastInner.toArray(vertices, 0 * 3);
1846
- lastInner.toArray(vertices, 3 * 3);
1847
-
1848
- if (isMiter) {
1849
- lastOuter.toArray(vertices, 1 * 3);
1850
- }
1851
- }
1852
- } else {
1853
- if (isMiter || !initialJoinIsOnLeftSide) {
1854
- lastInner.toArray(vertices, 1 * 3);
1855
- lastInner.toArray(vertices, 3 * 3);
1856
-
1857
- if (isMiter) {
1858
- lastOuter.toArray(vertices, 0 * 3);
1859
- }
1860
- }
1861
- }
1862
- }
1863
-
1864
- return numVertices; // -- End of algorithm
1865
- // -- Functions
1866
-
1867
- function getNormal(p1, p2, result) {
1868
- result.subVectors(p2, p1);
1869
- return result.set(-result.y, result.x).normalize();
1870
- }
1871
-
1872
- function addVertex(position, u, v) {
1873
- if (vertices) {
1874
- vertices[currentCoordinate] = position.x;
1875
- vertices[currentCoordinate + 1] = position.y;
1876
- vertices[currentCoordinate + 2] = 0;
1877
-
1878
- if (normals) {
1879
- normals[currentCoordinate] = 0;
1880
- normals[currentCoordinate + 1] = 0;
1881
- normals[currentCoordinate + 2] = 1;
1882
- }
1883
-
1884
- currentCoordinate += 3;
1885
-
1886
- if (uvs) {
1887
- uvs[currentCoordinateUV] = u;
1888
- uvs[currentCoordinateUV + 1] = v;
1889
- currentCoordinateUV += 2;
1890
- }
1891
- }
1892
-
1893
- numVertices += 3;
1894
- }
1895
-
1896
- function makeCircularSector(center, p1, p2, u, v) {
1897
- // param p1, p2: Points in the circle arc.
1898
- // p1 and p2 are in clockwise direction.
1899
- tempV2_1.copy(p1).sub(center).normalize();
1900
- tempV2_2.copy(p2).sub(center).normalize();
1901
- let angle = Math.PI;
1902
- const dot = tempV2_1.dot(tempV2_2);
1903
- if (Math.abs(dot) < 1) angle = Math.abs(Math.acos(dot));
1904
- angle /= arcDivisions;
1905
- tempV2_3.copy(p1);
1906
-
1907
- for (let i = 0, il = arcDivisions - 1; i < il; i++) {
1908
- tempV2_4.copy(tempV2_3).rotateAround(center, angle);
1909
- addVertex(tempV2_3, u, v);
1910
- addVertex(tempV2_4, u, v);
1911
- addVertex(center, u, 0.5);
1912
- tempV2_3.copy(tempV2_4);
1913
- }
1914
-
1915
- addVertex(tempV2_4, u, v);
1916
- addVertex(p2, u, v);
1917
- addVertex(center, u, 0.5);
1918
- }
1919
-
1920
- function makeSegmentTriangles() {
1921
- addVertex(lastPointR, u0, 1);
1922
- addVertex(lastPointL, u0, 0);
1923
- addVertex(currentPointL, u1, 0);
1924
- addVertex(lastPointR, u0, 1);
1925
- addVertex(currentPointL, u1, 1);
1926
- addVertex(currentPointR, u1, 0);
1927
- }
1928
-
1929
- function makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u) {
1930
- if (innerSideModified) {
1931
- // Optimized segment + bevel triangles
1932
- if (joinIsOnLeftSide) {
1933
- // Path segments triangles
1934
- addVertex(lastPointR, u0, 1);
1935
- addVertex(lastPointL, u0, 0);
1936
- addVertex(currentPointL, u1, 0);
1937
- addVertex(lastPointR, u0, 1);
1938
- addVertex(currentPointL, u1, 0);
1939
- addVertex(innerPoint, u1, 1); // Bevel join triangle
1940
-
1941
- addVertex(currentPointL, u, 0);
1942
- addVertex(nextPointL, u, 0);
1943
- addVertex(innerPoint, u, 0.5);
1944
- } else {
1945
- // Path segments triangles
1946
- addVertex(lastPointR, u0, 1);
1947
- addVertex(lastPointL, u0, 0);
1948
- addVertex(currentPointR, u1, 1);
1949
- addVertex(lastPointL, u0, 0);
1950
- addVertex(innerPoint, u1, 0);
1951
- addVertex(currentPointR, u1, 1); // Bevel join triangle
1952
-
1953
- addVertex(currentPointR, u, 1);
1954
- addVertex(nextPointR, u, 0);
1955
- addVertex(innerPoint, u, 0.5);
1956
- }
1957
- } else {
1958
- // Bevel join triangle. The segment triangles are done in the main loop
1959
- if (joinIsOnLeftSide) {
1960
- addVertex(currentPointL, u, 0);
1961
- addVertex(nextPointL, u, 0);
1962
- addVertex(currentPoint, u, 0.5);
1963
- } else {
1964
- addVertex(currentPointR, u, 1);
1965
- addVertex(nextPointR, u, 0);
1966
- addVertex(currentPoint, u, 0.5);
1967
- }
1968
- }
1969
- }
1970
-
1971
- function createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified) {
1972
- if (innerSideModified) {
1973
- if (joinIsOnLeftSide) {
1974
- addVertex(lastPointR, u0, 1);
1975
- addVertex(lastPointL, u0, 0);
1976
- addVertex(currentPointL, u1, 0);
1977
- addVertex(lastPointR, u0, 1);
1978
- addVertex(currentPointL, u1, 0);
1979
- addVertex(innerPoint, u1, 1);
1980
- addVertex(currentPointL, u0, 0);
1981
- addVertex(currentPoint, u1, 0.5);
1982
- addVertex(innerPoint, u1, 1);
1983
- addVertex(currentPoint, u1, 0.5);
1984
- addVertex(nextPointL, u0, 0);
1985
- addVertex(innerPoint, u1, 1);
1986
- } else {
1987
- addVertex(lastPointR, u0, 1);
1988
- addVertex(lastPointL, u0, 0);
1989
- addVertex(currentPointR, u1, 1);
1990
- addVertex(lastPointL, u0, 0);
1991
- addVertex(innerPoint, u1, 0);
1992
- addVertex(currentPointR, u1, 1);
1993
- addVertex(currentPointR, u0, 1);
1994
- addVertex(innerPoint, u1, 0);
1995
- addVertex(currentPoint, u1, 0.5);
1996
- addVertex(currentPoint, u1, 0.5);
1997
- addVertex(innerPoint, u1, 0);
1998
- addVertex(nextPointR, u0, 1);
1999
- }
2000
- }
2001
- }
2002
-
2003
- function addCapGeometry(center, p1, p2, joinIsOnLeftSide, start, u) {
2004
- // param center: End point of the path
2005
- // param p1, p2: Left and right cap points
2006
- switch (style.strokeLineCap) {
2007
- case 'round':
2008
- if (start) {
2009
- makeCircularSector(center, p2, p1, u, 0.5);
2010
- } else {
2011
- makeCircularSector(center, p1, p2, u, 0.5);
2012
- }
2013
-
2014
- break;
2015
-
2016
- case 'square':
2017
- if (start) {
2018
- tempV2_1.subVectors(p1, center);
2019
- tempV2_2.set(tempV2_1.y, -tempV2_1.x);
2020
- tempV2_3.addVectors(tempV2_1, tempV2_2).add(center);
2021
- tempV2_4.subVectors(tempV2_2, tempV2_1).add(center); // Modify already existing vertices
2022
-
2023
- if (joinIsOnLeftSide) {
2024
- tempV2_3.toArray(vertices, 1 * 3);
2025
- tempV2_4.toArray(vertices, 0 * 3);
2026
- tempV2_4.toArray(vertices, 3 * 3);
2027
- } else {
2028
- tempV2_3.toArray(vertices, 1 * 3);
2029
- tempV2_3.toArray(vertices, 3 * 3);
2030
- tempV2_4.toArray(vertices, 0 * 3);
2031
- }
2032
- } else {
2033
- tempV2_1.subVectors(p2, center);
2034
- tempV2_2.set(tempV2_1.y, -tempV2_1.x);
2035
- tempV2_3.addVectors(tempV2_1, tempV2_2).add(center);
2036
- tempV2_4.subVectors(tempV2_2, tempV2_1).add(center);
2037
- const vl = vertices.length; // Modify already existing vertices
2038
-
2039
- if (joinIsOnLeftSide) {
2040
- tempV2_3.toArray(vertices, vl - 1 * 3);
2041
- tempV2_4.toArray(vertices, vl - 2 * 3);
2042
- tempV2_4.toArray(vertices, vl - 4 * 3);
2043
- } else {
2044
- tempV2_3.toArray(vertices, vl - 2 * 3);
2045
- tempV2_4.toArray(vertices, vl - 1 * 3);
2046
- tempV2_4.toArray(vertices, vl - 4 * 3);
2047
- }
2048
- }
2049
-
2050
- break;
2051
- }
2052
- }
2053
-
2054
- function removeDuplicatedPoints(points) {
2055
- // Creates a new array if necessary with duplicated points removed.
2056
- // This does not remove duplicated initial and ending points of a closed path.
2057
- let dupPoints = false;
2058
-
2059
- for (let i = 1, n = points.length - 1; i < n; i++) {
2060
- if (points[i].distanceTo(points[i + 1]) < minDistance) {
2061
- dupPoints = true;
2062
- break;
2063
- }
2064
- }
2065
-
2066
- if (!dupPoints) return points;
2067
- const newPoints = [];
2068
- newPoints.push(points[0]);
2069
-
2070
- for (let i = 1, n = points.length - 1; i < n; i++) {
2071
- if (points[i].distanceTo(points[i + 1]) >= minDistance) {
2072
- newPoints.push(points[i]);
2073
- }
2074
- }
2075
-
2076
- newPoints.push(points[points.length - 1]);
2077
- return newPoints;
2078
- }
2079
- }
2080
-
2081
- }
2082
-
2083
- export { SVGLoader };