x_ite 5.0.2 → 6.0.0

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 (340) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +21 -0
  3. package/Makefile +10 -15
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/version.pl +1 -4
  7. package/dist/assets/components/annotation.js +2 -2
  8. package/dist/assets/components/annotation.min.js +1 -1
  9. package/dist/assets/components/cad-geometry.js +2 -2
  10. package/dist/assets/components/cad-geometry.min.js +1 -1
  11. package/dist/assets/components/cube-map-texturing.js +6 -19
  12. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  13. package/dist/assets/components/dis.js +2 -2
  14. package/dist/assets/components/dis.min.js +1 -1
  15. package/dist/assets/components/event-utilities.js +3 -3
  16. package/dist/assets/components/event-utilities.min.js +1 -1
  17. package/dist/assets/components/geometry2d.js +4 -4
  18. package/dist/assets/components/geometry2d.min.js +1 -1
  19. package/dist/assets/components/geospatial.js +32 -1685
  20. package/dist/assets/components/geospatial.min.js +1 -1
  21. package/dist/assets/components/h-anim.js +70 -77
  22. package/dist/assets/components/h-anim.min.js +1 -1
  23. package/dist/assets/components/key-device-sensor.js +3 -3
  24. package/dist/assets/components/key-device-sensor.min.js +1 -1
  25. package/dist/assets/components/layout.js +38 -52
  26. package/dist/assets/components/layout.min.js +1 -1
  27. package/dist/assets/components/nurbs.js +277 -194
  28. package/dist/assets/components/nurbs.min.js +1 -1
  29. package/dist/assets/components/particle-systems.js +1918 -1658
  30. package/dist/assets/components/particle-systems.min.js +1 -1
  31. package/dist/assets/components/picking.js +33 -41
  32. package/dist/assets/components/picking.min.js +1 -1
  33. package/dist/assets/components/projective-texture-mapping.js +72 -86
  34. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  35. package/dist/assets/components/rigid-body-physics.js +36 -57
  36. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  37. package/dist/assets/components/scripting.js +2 -2
  38. package/dist/assets/components/scripting.min.js +1 -1
  39. package/dist/assets/components/texturing-3d.js +26 -75
  40. package/dist/assets/components/texturing-3d.min.js +3 -3
  41. package/dist/assets/components/volume-rendering.js +10 -10
  42. package/dist/assets/components/volume-rendering.min.js +1 -1
  43. package/dist/assets/components/x_ite.js +2 -2
  44. package/dist/assets/components/x_ite.min.js +1 -1
  45. package/dist/assets/linetype/1.png +0 -0
  46. package/dist/assets/linetype/10.png +0 -0
  47. package/dist/assets/linetype/11.png +0 -0
  48. package/dist/assets/linetype/12.png +0 -0
  49. package/dist/assets/linetype/13.png +0 -0
  50. package/dist/assets/linetype/14.png +0 -0
  51. package/dist/assets/linetype/15.png +0 -0
  52. package/dist/assets/linetype/16.png +0 -0
  53. package/dist/assets/linetype/2.png +0 -0
  54. package/dist/assets/linetype/3.png +0 -0
  55. package/dist/assets/linetype/4.png +0 -0
  56. package/dist/assets/linetype/5.png +0 -0
  57. package/dist/assets/linetype/6.png +0 -0
  58. package/dist/assets/linetype/7.png +0 -0
  59. package/dist/assets/linetype/8.png +0 -0
  60. package/dist/assets/linetype/9.png +0 -0
  61. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  62. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  63. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  64. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  65. package/dist/assets/shaders/webgl2/Gouraud.vs +31 -3
  66. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  67. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  68. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  69. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  70. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  71. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  72. package/dist/assets/shaders/webgl2/Point.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  74. package/dist/example.html +6 -6
  75. package/dist/x_ite.css +180 -208
  76. package/dist/x_ite.js +16477 -16629
  77. package/dist/x_ite.min.js +17 -17
  78. package/dist/x_ite.zip +0 -0
  79. package/docs/404.md +6 -0
  80. package/docs/Accessing-the-External-Browser.md +20 -14
  81. package/docs/Browser-Support.md +6 -0
  82. package/docs/Custom-Shaders.md +17 -24
  83. package/docs/Features.md +7 -1
  84. package/docs/Gemfile +44 -0
  85. package/docs/Gemfile.lock +122 -0
  86. package/docs/Glossary.md +6 -0
  87. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  88. package/docs/Supported-Nodes.md +9 -1
  89. package/docs/What's-New.md +31 -0
  90. package/docs/XHTML-DOM-Integration.md +6 -0
  91. package/docs/_config.yml +1 -1
  92. package/docs/assets/css/main.scss +26 -0
  93. package/docs/index.md +38 -46
  94. package/docs/reference/Browser-Services.md +9 -3
  95. package/docs/reference/Constants-Services.md +6 -0
  96. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +6 -0
  97. package/docs/reference/Field-Services-and-Objects.md +6 -0
  98. package/docs/reference/Prototype-Services.md +6 -0
  99. package/docs/reference/Route-Services.md +6 -0
  100. package/docs/reference/Scene-Services.md +8 -2
  101. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  102. package/docs/tutorials/Adding-backgrounds.md +6 -0
  103. package/docs/tutorials/Adding-fog.md +6 -0
  104. package/docs/tutorials/Adding-sound.md +6 -0
  105. package/docs/tutorials/Animating-transforms.md +6 -0
  106. package/docs/tutorials/Basic-Nodes.md +6 -0
  107. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  108. package/docs/tutorials/Building-elevation-grids.md +6 -0
  109. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  110. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  111. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  112. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  113. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  114. package/docs/tutorials/Controlling-detail.md +6 -0
  115. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  116. package/docs/tutorials/Controlling-navigation.md +6 -0
  117. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  118. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  119. package/docs/tutorials/Creating-new-node-types.md +6 -0
  120. package/docs/tutorials/Grouping-nodes.md +6 -0
  121. package/docs/tutorials/Hello,-World!.md +6 -0
  122. package/docs/tutorials/Improving-Performance.md +6 -0
  123. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  124. package/docs/tutorials/Introducing-X3D.md +6 -0
  125. package/docs/tutorials/Introducing-animation.md +6 -0
  126. package/docs/tutorials/Introducing-script-use.md +6 -0
  127. package/docs/tutorials/Lighting-your-world.md +6 -0
  128. package/docs/tutorials/Mapping-textures.md +6 -0
  129. package/docs/tutorials/Naming-nodes.md +6 -0
  130. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  131. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  132. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  133. package/docs/tutorials/Transforming-Shapes.md +6 -0
  134. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  135. package/docs/tutorials/index.md +6 -0
  136. package/package.json +6 -7
  137. package/src/assets/components/geometry2d.js +1 -1
  138. package/src/assets/components/key-device-sensor.js +1 -1
  139. package/src/assets/components/layout.js +1 -1
  140. package/src/assets/components/particle-systems.js +1 -1
  141. package/src/assets/components/volume-rendering.js +1 -1
  142. package/src/assets/linetype/1.png +0 -0
  143. package/src/assets/linetype/10.png +0 -0
  144. package/src/assets/linetype/11.png +0 -0
  145. package/src/assets/linetype/12.png +0 -0
  146. package/src/assets/linetype/13.png +0 -0
  147. package/src/assets/linetype/14.png +0 -0
  148. package/src/assets/linetype/15.png +0 -0
  149. package/src/assets/linetype/16.png +0 -0
  150. package/src/assets/linetype/2.png +0 -0
  151. package/src/assets/linetype/3.png +0 -0
  152. package/src/assets/linetype/4.png +0 -0
  153. package/src/assets/linetype/5.png +0 -0
  154. package/src/assets/linetype/6.png +0 -0
  155. package/src/assets/linetype/7.png +0 -0
  156. package/src/assets/linetype/8.png +0 -0
  157. package/src/assets/linetype/9.png +0 -0
  158. package/src/assets/shaders/Types.glsl +1 -9
  159. package/src/assets/shaders/webgl1/Line.fs +3 -28
  160. package/src/assets/shaders/webgl1/Line.vs +5 -19
  161. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  162. package/src/assets/shaders/webgl1/Point.vs +2 -3
  163. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  164. package/src/assets/shaders/webgl2/Gouraud.vs +5 -3
  165. package/src/assets/shaders/webgl2/Line.fs +11 -17
  166. package/src/assets/shaders/webgl2/Line.vs +16 -20
  167. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  168. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  169. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  170. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  171. package/src/assets/shaders/webgl2/Point.vs +6 -6
  172. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  173. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  174. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  175. package/src/example.html +6 -6
  176. package/src/standard/Math/Algorithm.js +12 -28
  177. package/src/standard/Math/Geometry/Plane3.js +0 -2
  178. package/src/standard/Math/Geometry/ViewVolume.js +88 -83
  179. package/src/standard/Math/Numbers/Color3.js +6 -0
  180. package/src/standard/Math/Numbers/Color4.js +7 -0
  181. package/src/standard/Math/Numbers/Complex.js +5 -0
  182. package/src/standard/Math/Numbers/Matrix2.js +20 -2
  183. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  184. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  185. package/src/standard/Math/Numbers/Quaternion.js +7 -0
  186. package/src/standard/Math/Numbers/Rotation4.js +7 -0
  187. package/src/standard/Math/Numbers/Vector2.js +8 -5
  188. package/src/standard/Math/Numbers/Vector3.js +16 -10
  189. package/src/standard/Math/Numbers/Vector4.js +12 -7
  190. package/src/standard/Math/Utility/BVH.js +45 -17
  191. package/src/tests.js +6 -1
  192. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  193. package/src/x_ite/Base/X3DField.js +1 -1
  194. package/src/x_ite/Browser/Core/BrowserOptions.js +2 -2
  195. package/src/x_ite/Browser/Core/BrowserTimings.js +4 -2
  196. package/src/x_ite/Browser/Core/Context.js +185 -0
  197. package/src/x_ite/Browser/Core/ContextMenu.js +299 -193
  198. package/src/x_ite/Browser/Core/Notification.js +1 -0
  199. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  200. package/src/x_ite/Browser/Layout/ScreenText.js +11 -4
  201. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +4 -15
  202. package/src/x_ite/Browser/Navigation/ExamineViewer.js +12 -19
  203. package/src/x_ite/Browser/Navigation/LookAtViewer.js +0 -3
  204. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  205. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +14 -7
  206. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  207. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  208. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  209. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  210. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  211. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  212. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  213. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  214. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +37 -37
  215. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +19 -13
  216. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  217. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  218. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  219. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  220. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  221. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +23 -33
  222. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  223. package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -1
  224. package/src/x_ite/Browser/VERSION.js +1 -1
  225. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  226. package/src/x_ite/Browser/X3DBrowserContext.js +35 -10
  227. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  228. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  229. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  230. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  231. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +0 -1
  232. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  233. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  234. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  235. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  236. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  237. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  238. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  239. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  240. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  241. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  242. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  243. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  244. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  245. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  246. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  247. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  248. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  249. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  250. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  251. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  252. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  253. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  254. package/src/x_ite/Components/Layout/ScreenGroup.js +18 -23
  255. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  256. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  257. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  258. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  259. package/src/x_ite/Components/Navigation/LOD.js +1 -1
  260. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  261. package/src/x_ite/Components/Networking/Anchor.js +10 -4
  262. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  263. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  264. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  265. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  266. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +461 -876
  267. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  268. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  269. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  270. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  271. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  272. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  273. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  274. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +90 -107
  275. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +48 -55
  276. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +53 -70
  277. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  278. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  279. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  280. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  281. package/src/x_ite/Components/Rendering/Color.js +12 -37
  282. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -38
  283. package/src/x_ite/Components/Rendering/IndexedLineSet.js +12 -4
  284. package/src/x_ite/Components/Rendering/LineSet.js +21 -13
  285. package/src/x_ite/Components/Rendering/PointSet.js +21 -13
  286. package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -0
  287. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  288. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +248 -325
  289. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +305 -134
  290. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +99 -122
  291. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  292. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  293. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  294. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +5 -15
  295. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +7 -24
  296. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +7 -24
  297. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  298. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +219 -209
  299. package/src/x_ite/Components/Shaders/X3DShaderNode.js +1 -1
  300. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +23 -1
  301. package/src/x_ite/Components/Shape/Appearance.js +12 -0
  302. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  303. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  304. package/src/x_ite/Components/Shape/PointProperties.js +23 -1
  305. package/src/x_ite/Components/Shape/Shape.js +27 -34
  306. package/src/x_ite/Components/Sound/Sound.js +30 -40
  307. package/src/x_ite/Components/Text/Text.js +6 -20
  308. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -26
  309. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  310. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +21 -0
  311. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  312. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  313. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -26
  314. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -26
  315. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  316. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +7 -7
  317. package/src/x_ite/Components.js +2 -2
  318. package/src/x_ite/Fallback.js +9 -3
  319. package/src/x_ite/Fields/SFColor.js +4 -0
  320. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  321. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  322. package/src/x_ite/Fields/SFRotation.js +4 -0
  323. package/src/x_ite/Fields/SFString.js +4 -0
  324. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +4 -0
  325. package/src/x_ite/Parser/XMLParser.js +1 -1
  326. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  327. package/src/x_ite/Rendering/VertexArray.js +101 -0
  328. package/src/x_ite/Rendering/X3DRenderObject.js +123 -144
  329. package/src/x_ite/X3D.js +32 -26
  330. package/src/x_ite.config.js +0 -5
  331. package/src/x_ite.css +200 -162
  332. package/src/x_ite.html +26 -10
  333. package/src/x_ite.js +42 -0
  334. package/x_ite.min.html +26 -10
  335. package/dist/assets/hatching/0.png +0 -0
  336. package/dist/assets/linetype/0.png +0 -0
  337. package/src/assets/hatching/0.png +0 -0
  338. package/src/assets/linetype/0.png +0 -0
  339. package/src/spinner.css +0 -67
  340. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -71,19 +71,20 @@ function (PointingDevice,
71
71
  "use strict";
72
72
 
73
73
  const
74
- _pointingDevice = Symbol (),
75
- _cursorType = Symbol (),
76
- _pointer = Symbol (),
77
- _hitRay = Symbol (),
78
- _hits = Symbol (),
79
- _enabledSensors = Symbol (),
80
- _selectedLayer = Symbol (),
81
- _overSensors = Symbol (),
82
- _activeSensors = Symbol (),
83
- _hitPointSorter = Symbol (),
84
- _layerNumber = Symbol (),
85
- _layerSorter = Symbol (),
86
- _pointerTime = Symbol ();
74
+ _pointingDevice = Symbol (),
75
+ _cursorType = Symbol (),
76
+ _pointer = Symbol (),
77
+ _hitRay = Symbol (),
78
+ _hits = Symbol (),
79
+ _enabledSensors = Symbol (),
80
+ _pickOnlySensors = Symbol (),
81
+ _selectedLayer = Symbol (),
82
+ _overSensors = Symbol (),
83
+ _activeSensors = Symbol (),
84
+ _hitPointSorter = Symbol (),
85
+ _layerNumber = Symbol (),
86
+ _layerSorter = Symbol (),
87
+ _pointerTime = Symbol ();
87
88
 
88
89
  const line = new Line3 (Vector3 .Zero, Vector3 .Zero);
89
90
 
@@ -95,8 +96,8 @@ function (PointingDevice,
95
96
  this [_hits] = [ ];
96
97
  this [_enabledSensors] = [new Map ()];
97
98
  this [_selectedLayer] = null;
98
- this [_overSensors] = new Map ();
99
- this [_activeSensors] = new Map ();
99
+ this [_overSensors] = new Set ();
100
+ this [_activeSensors] = new Set ();
100
101
  this [_hitPointSorter] = new MergeSort (this [_hits], function (lhs, rhs) { return lhs .intersection .point .z < rhs .intersection .point .z; });
101
102
  this [_layerSorter] = new MergeSort (this [_hits], function (lhs, rhs) { return lhs .layerNumber < rhs .layerNumber; });
102
103
  this [_pointerTime] = 0;
@@ -162,14 +163,7 @@ function (PointingDevice,
162
163
  },
163
164
  setHitRay: function (projectionMatrix, viewport)
164
165
  {
165
- try
166
- {
167
- ViewVolume .unProjectRay (this [_pointer] .x, this [_pointer] .y, Matrix4 .Identity, projectionMatrix, viewport, this [_hitRay]);
168
- }
169
- catch (error)
170
- {
171
- this [_hitRay] .set (Vector3 .Zero, Vector3 .Zero);
172
- }
166
+ ViewVolume .unProjectRay (this [_pointer] .x, this [_pointer] .y, Matrix4 .Identity, projectionMatrix, viewport, this [_hitRay]);
173
167
  },
174
168
  getHitRay: function ()
175
169
  {
@@ -179,6 +173,10 @@ function (PointingDevice,
179
173
  {
180
174
  return this [_enabledSensors];
181
175
  },
176
+ getPickOnlySensors: function ()
177
+ {
178
+ return this [_pickOnlySensors];
179
+ },
182
180
  addHit: function (intersection, layer, shape, modelViewMatrix)
183
181
  {
184
182
  const sensors = this [_enabledSensors] .at (-1);
@@ -187,7 +185,7 @@ function (PointingDevice,
187
185
  pointer: this [_pointer],
188
186
  hitRay: this [_hitRay] .copy (),
189
187
  intersection: intersection,
190
- sensors: sensors .size ? new Map (sensors) : sensors,
188
+ sensors: new Set (sensors .values ()),
191
189
  layer: layer,
192
190
  layerNumber: this [_layerNumber],
193
191
  shape: shape,
@@ -204,7 +202,7 @@ function (PointingDevice,
204
202
  },
205
203
  buttonPressEvent: function (x, y)
206
204
  {
207
- this .touch (x, y);
205
+ this .touch (x, y, true);
208
206
 
209
207
  if (this [_hits] .length === 0)
210
208
  return false;
@@ -214,7 +212,7 @@ function (PointingDevice,
214
212
  this [_selectedLayer] = nearestHit .layer;
215
213
  this [_activeSensors] = nearestHit .sensors;
216
214
 
217
- for (const sensor of this [_activeSensors] .values ())
215
+ for (const sensor of this [_activeSensors])
218
216
  sensor .set_active__ (true, nearestHit);
219
217
 
220
218
  return !! nearestHit .sensors .size;
@@ -223,10 +221,10 @@ function (PointingDevice,
223
221
  {
224
222
  this [_selectedLayer] = null;
225
223
 
226
- for (const sensor of this [_activeSensors] .values ())
224
+ for (const sensor of this [_activeSensors])
227
225
  sensor .set_active__ (false, null);
228
226
 
229
- this [_activeSensors] = new Map ();
227
+ this [_activeSensors] = new Set ();
230
228
 
231
229
  // Selection
232
230
 
@@ -234,14 +232,14 @@ function (PointingDevice,
234
232
  },
235
233
  motionNotifyEvent: function (x, y)
236
234
  {
237
- this .touch (x, y);
235
+ this .touch (x, y, true);
238
236
  this .motion ();
239
237
 
240
238
  return !! (this [_hits] .length && this [_hits] .at (-1) .sensors .size);
241
239
  },
242
240
  leaveNotifyEvent: function ()
243
241
  { },
244
- touch: function (x, y)
242
+ touch: function (x, y, pickOnlySensors)
245
243
  {
246
244
  if (this .getViewer () ._isActive .getValue ())
247
245
  {
@@ -251,6 +249,8 @@ function (PointingDevice,
251
249
 
252
250
  const t0 = performance .now ();
253
251
 
252
+ this [_pickOnlySensors] = pickOnlySensors;
253
+
254
254
  this [_pointer] .set (x, y);
255
255
 
256
256
  // Clear hits.
@@ -282,7 +282,7 @@ function (PointingDevice,
282
282
  modelViewMatrix: new Matrix4 (),
283
283
  hitRay: this [_selectedLayer] ? this [_hitRay] : line,
284
284
  intersection: null,
285
- sensors: new Map (),
285
+ sensors: new Set (),
286
286
  shape: null,
287
287
  layer: null,
288
288
  layerNumber: 0,
@@ -293,14 +293,14 @@ function (PointingDevice,
293
293
 
294
294
  if (this [_hits] .length)
295
295
  {
296
- var difference = Algorithm .map_difference (this [_overSensors], nearestHit .sensors, new Map ());
296
+ var difference = Algorithm .set_difference (this [_overSensors], nearestHit .sensors, new Set ());
297
297
  }
298
298
  else
299
299
  {
300
- var difference = new Map (this [_overSensors]);
300
+ var difference = new Set (this [_overSensors]);
301
301
  }
302
302
 
303
- for (const sensor of difference .values ())
303
+ for (const sensor of difference)
304
304
  sensor .set_over__ (false, nearestHit);
305
305
 
306
306
  // Set isOver to TRUE for appropriate nodes
@@ -309,17 +309,17 @@ function (PointingDevice,
309
309
  {
310
310
  this [_overSensors] = nearestHit .sensors;
311
311
 
312
- for (const sensor of this [_overSensors] .values ())
312
+ for (const sensor of this [_overSensors])
313
313
  sensor .set_over__ (true, nearestHit);
314
314
  }
315
315
  else
316
316
  {
317
- this [_overSensors] = new Map ();
317
+ this [_overSensors] = new Set ();
318
318
  }
319
319
 
320
320
  // Forward motion event to active drag sensor nodes
321
321
 
322
- for (const sensor of this [_activeSensors] .values ())
322
+ for (const sensor of this [_activeSensors])
323
323
  sensor .set_motion__ (nearestHit);
324
324
  },
325
325
  getPointerTime: function ()
@@ -97,25 +97,31 @@ function ($,
97
97
  },
98
98
  getRenderer: function ()
99
99
  {
100
- const
101
- gl = this .getContext (),
102
- dbgRenderInfo = this .getExtension ("WEBGL_debug_renderer_info");
100
+ const gl = this .getContext ();
101
+
102
+ if (! navigator .userAgent .match (/Firefox/))
103
+ {
104
+ const dbgRenderInfo = gl .getExtension ("WEBGL_debug_renderer_info");
103
105
 
104
- if (dbgRenderInfo)
105
- return gl .getParameter (dbgRenderInfo .UNMASKED_RENDERER_WEBGL);
106
+ if (dbgRenderInfo)
107
+ return gl .getParameter (dbgRenderInfo .UNMASKED_RENDERER_WEBGL);
108
+ }
106
109
 
107
- return gl .getParameter (this .getContext () .RENDERER);
110
+ return gl .getParameter (gl .RENDERER);
108
111
  },
109
112
  getVendor: function ()
110
113
  {
111
- const
112
- gl = this .getContext (),
113
- dbgRenderInfo = this .getExtension ("WEBGL_debug_renderer_info");
114
+ const gl = this .getContext ();
115
+
116
+ if (! navigator .userAgent .match (/Firefox/))
117
+ {
118
+ const dbgRenderInfo = gl .getExtension ("WEBGL_debug_renderer_info");
114
119
 
115
- if (dbgRenderInfo)
116
- return gl .getParameter (dbgRenderInfo .UNMASKED_VENDOR_WEBGL);
120
+ if (dbgRenderInfo)
121
+ return gl .getParameter (dbgRenderInfo .UNMASKED_VENDOR_WEBGL);
122
+ }
117
123
 
118
- return gl .getParameter (this .getContext () .VENDOR);
124
+ return gl .getParameter (gl .VENDOR);
119
125
  },
120
126
  getWebGLVersion: function ()
121
127
  {
@@ -181,7 +187,7 @@ function ($,
181
187
  const element = this .getElement ();
182
188
 
183
189
  if (element .fullScreen ())
184
- element .addClass ("x_ite-fullscreen");
190
+ element .addClass ("x_ite-fullscreen");
185
191
  else
186
192
  element .removeClass ("x_ite-fullscreen");
187
193
  },
@@ -72,14 +72,35 @@ function (ShaderSource,
72
72
 
73
73
  source = ShaderSource .get (gl, source);
74
74
 
75
- const
76
- COMMENTS = "\\s+|/\\*[^]*?\\*/|//.*?\\n",
77
- VERSION = "#version\\s+.*?\\n",
78
- ANY = "[^]*";
79
-
80
- const
81
- GLSL = new RegExp ("^((?:" + COMMENTS + ")?(?:" + VERSION + ")?)(" + ANY + ")$"),
82
- match = source .match (GLSL);
75
+ const
76
+ COMMENTS = "\\s+|/\\*[\\s\\S]*?\\*/|//.*?\\n",
77
+ LINE = "#line\\s+.*?\\n",
78
+ IF = "#if\\s+.*?\\n",
79
+ ELIF = "#elif\\s+.*?\\n",
80
+ IFDEF = "#ifdef\\s+.*?\\n",
81
+ IFNDEF = "#ifndef\\s+.*?\\n",
82
+ ELSE = "#else.*?\\n",
83
+ ENDIF = "#endif.*?\\n",
84
+ DEFINE = "#define\\s+(?:[^\\n\\\\]|\\\\[^\\r\\n]|\\\\\\r?\\n)*\\n",
85
+ UNDEF = "#undef\\s+.*?\\n",
86
+ PRAGMA = "#pragma\\s+.*?\\n",
87
+ PREPROCESSOR = LINE + "|" + IF + "|" + ELIF + "|" + IFDEF + "|" + IFNDEF + "|" + ELSE + "|" + ENDIF + "|" + DEFINE + "|" + UNDEF + "|" + PRAGMA,
88
+ VERSION = "#version\\s+.*?\\n",
89
+ EXTENSION = "#extension\\s+.*?\\n",
90
+ ANY = "[\\s\\S]*";
91
+
92
+ const
93
+ GLSL = new RegExp ("^((?:" + COMMENTS + "|" + PREPROCESSOR + ")*(?:" + VERSION + ")?(?:" + COMMENTS + "|" + PREPROCESSOR + "|" + EXTENSION + ")*)(" + ANY + ")$"),
94
+ match = source .match (GLSL);
95
+
96
+ // const
97
+ // COMMENTS = "\\s+|/\\*[^]*?\\*/|//.*?\\n",
98
+ // VERSION = "#version\\s+.*?\\n",
99
+ // ANY = "[^]*";
100
+
101
+ // const
102
+ // GLSL = new RegExp ("^((?:" + COMMENTS + ")?(?:" + VERSION + ")?)(" + ANY + ")$"),
103
+ // match = source .match (GLSL);
83
104
 
84
105
  if (! match)
85
106
  return source;
@@ -91,7 +112,7 @@ function (ShaderSource,
91
112
  if (browser .getRenderingProperty ("LogarithmicDepthBuffer"))
92
113
  constants += "#define X3D_LOGARITHMIC_DEPTH_BUFFER\n";
93
114
 
94
- if (gl .getVersion () >= 2 || browser .getExtension ("WEBGL_depth_texture"))
115
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
95
116
  constants += "#define X3D_DEPTH_TEXTURE\n";
96
117
 
97
118
  if (browser .getMultiTexturing ())
@@ -123,9 +144,9 @@ function (ShaderSource,
123
144
  definitions += "#define x3d_PointLight 2\n";
124
145
  definitions += "#define x3d_SpotLight 3\n";
125
146
 
126
- definitions += "#define x3d_MaxTextures " + browser .getMaxTextures () + "\n";
127
- definitions += "#define x3d_TextureType2D 2\n";
128
- definitions += "#define x3d_TextureType3D 3\n";
147
+ definitions += "#define x3d_MaxTextures " + browser .getMaxTextures () + "\n";
148
+ definitions += "#define x3d_TextureType2D 2\n";
149
+ definitions += "#define x3d_TextureType3D 3\n";
129
150
  definitions += "#define x3d_TextureTypeCube 4\n";
130
151
 
131
152
  definitions += "#define x3d_Replace " + MultiTextureModeType .REPLACE + "\n";
@@ -62,8 +62,10 @@ define ([
62
62
  "text!assets/shaders/webgl2/include/Colors.glsl",
63
63
  "text!assets/shaders/webgl2/include/Fog.glsl",
64
64
  "text!assets/shaders/webgl2/include/Hatch.glsl",
65
+ "text!assets/shaders/webgl2/include/Line2.glsl",
65
66
  "text!assets/shaders/webgl2/include/Normal.glsl",
66
67
  "text!assets/shaders/webgl2/include/Pack.glsl",
68
+ "text!assets/shaders/webgl2/include/Particle.glsl",
67
69
  "text!assets/shaders/webgl2/include/Perlin.glsl",
68
70
  "text!assets/shaders/webgl2/include/Shadow.glsl",
69
71
  "text!assets/shaders/webgl2/include/SpotFactor.glsl",
@@ -83,8 +85,10 @@ function (ClipPlanes1,
83
85
  Colors2,
84
86
  Fog2,
85
87
  Hatch2,
88
+ Line22,
86
89
  Normal2,
87
90
  Pack2,
91
+ Particle2,
88
92
  Perlin2,
89
93
  Shadow2,
90
94
  SpotFactor2,
@@ -112,8 +116,10 @@ function (ClipPlanes1,
112
116
  Colors: Colors2,
113
117
  Fog: Fog2,
114
118
  Hatch: Hatch2,
119
+ Line2: Line22,
115
120
  Normal: Normal2,
116
121
  Pack: Pack2,
122
+ Particle: Particle2,
117
123
  Perlin: Perlin2,
118
124
  Shadow: Shadow2,
119
125
  SpotFactor: SpotFactor2,
@@ -48,14 +48,14 @@
48
48
 
49
49
 
50
50
  define ([
51
+ "x_ite/Rendering/VertexArray",
51
52
  "x_ite/Rendering/TextureBuffer",
52
- "standard/Math/Numbers/Vector4",
53
53
  "standard/Math/Numbers/Matrix3",
54
54
  "standard/Math/Numbers/Matrix4",
55
55
  "standard/Math/Geometry/Camera",
56
56
  ],
57
- function (TextureBuffer,
58
- Vector4,
57
+ function (VertexArray,
58
+ TextureBuffer,
59
59
  Matrix3,
60
60
  Matrix4,
61
61
  Camera)
@@ -90,7 +90,8 @@ function (TextureBuffer,
90
90
  gl = browser .getContext (),
91
91
  frameBuffer = new TextureBuffer (browser, 16, 16),
92
92
  normalBuffer = gl .createBuffer (),
93
- vertexBuffer = gl .createBuffer ();
93
+ vertexBuffer = gl .createBuffer (),
94
+ vertexArrayObject = new VertexArray ();
94
95
 
95
96
  frameBuffer .bind ();
96
97
 
@@ -98,9 +99,9 @@ function (TextureBuffer,
98
99
  shaderNode .setLocalObjects (gl, [ ]);
99
100
 
100
101
  gl .bindBuffer (gl .ARRAY_BUFFER, vertexBuffer);
101
- gl .bufferData (gl .ARRAY_BUFFER, new Float32Array (vertices), gl .STATIC_DRAW);
102
+ gl .bufferData (gl .ARRAY_BUFFER, new Float32Array (vertices), gl .DYNAMIC_DRAW);
102
103
  gl .bindBuffer (gl .ARRAY_BUFFER, normalBuffer);
103
- gl .bufferData (gl .ARRAY_BUFFER, new Float32Array (normals), gl .STATIC_DRAW);
104
+ gl .bufferData (gl .ARRAY_BUFFER, new Float32Array (normals), gl .DYNAMIC_DRAW);
104
105
 
105
106
  // Matrices
106
107
 
@@ -137,16 +138,21 @@ function (TextureBuffer,
137
138
  gl .enable (gl .CULL_FACE);
138
139
  gl .cullFace (gl .BACK);
139
140
 
140
- shaderNode .enableNormalAttribute (gl, normalBuffer);
141
- shaderNode .enableVertexAttribute (gl, vertexBuffer);
141
+ vertexArrayObject .enable (gl, shaderNode);
142
+ shaderNode .enableNormalAttribute (gl, normalBuffer, 0, 0);
143
+ shaderNode .enableVertexAttribute (gl, vertexBuffer, 0, 0);
142
144
 
143
145
  gl .drawArrays (gl .TRIANGLES, 0, 6);
144
146
 
145
- shaderNode .disableNormalAttribute (gl, normalBuffer);
146
-
147
147
  const data = frameBuffer .readPixels ();
148
148
 
149
149
  frameBuffer .unbind ();
150
+ frameBuffer .delete ();
151
+
152
+ gl .deleteBuffer (normalBuffer);
153
+ gl .deleteBuffer (vertexBuffer);
154
+
155
+ vertexArrayObject .delete (gl);
150
156
 
151
157
  return true || (data [0] == 255 && data [1] == 0 && data [2] == 0 && data [3] == 255);
152
158
  };
@@ -69,6 +69,7 @@ function (Appearance,
69
69
  "use strict";
70
70
 
71
71
  const
72
+ _lineStippleScale = Symbol (),
72
73
  _linetypeTextures = Symbol (),
73
74
  _hatchStyleTextures = Symbol (),
74
75
  _defaultAppearance = Symbol (),
@@ -76,12 +77,15 @@ function (Appearance,
76
77
  _defaultLineProperties = Symbol (),
77
78
  _defaultFillProperties = Symbol (),
78
79
  _defaultMaterial = Symbol (),
79
- _lineFillTextureProperties = Symbol ();
80
+ _lineFillTextureProperties = Symbol (),
81
+ _lineTransformShaderNode = Symbol (),
82
+ _lineTransformFeedback = Symbol ();
80
83
 
81
84
  function X3DShapeContext ()
82
85
  {
83
86
  this [_linetypeTextures] = [ ];
84
87
  this [_hatchStyleTextures] = [ ];
88
+ this [_lineStippleScale] = 1 / (this .getPixelPerPoint () * 32); // 32px
85
89
  }
86
90
 
87
91
  X3DShapeContext .prototype =
@@ -110,6 +114,10 @@ function (Appearance,
110
114
 
111
115
  return this [_defaultPointProperties];
112
116
  },
117
+ getLineStippleScale: function ()
118
+ {
119
+ return this [_lineStippleScale];
120
+ },
113
121
  getDefaultLineProperties: function ()
114
122
  {
115
123
  this [_defaultLineProperties] = new LineProperties (this .getPrivateScene ());
@@ -148,11 +156,8 @@ function (Appearance,
148
156
 
149
157
  return this [_defaultMaterial];
150
158
  },
151
- getLinetype: function (index)
159
+ getLinetypeTexture: function (index)
152
160
  {
153
- if (index < 1 || index > 15)
154
- index = 1;
155
-
156
161
  let linetypeTexture = this [_linetypeTextures] [index];
157
162
 
158
163
  if (linetypeTexture)
@@ -166,11 +171,8 @@ function (Appearance,
166
171
 
167
172
  return linetypeTexture;
168
173
  },
169
- getHatchStyle: function (index)
174
+ getHatchStyleTexture: function (index)
170
175
  {
171
- if (index < 1 || index > 19)
172
- index = 1;
173
-
174
176
  let hatchStyleTexture = this [_hatchStyleTextures] [index];
175
177
 
176
178
  if (hatchStyleTexture)
@@ -187,6 +189,10 @@ function (Appearance,
187
189
  getLineFillTextureProperties: function ()
188
190
  {
189
191
  this [_lineFillTextureProperties] = new TextureProperties (this .getPrivateScene ());
192
+
193
+ this [_lineFillTextureProperties] ._minificationFilter = "NEAREST_PIXEL";
194
+ this [_lineFillTextureProperties] ._magnificationFilter = "NEAREST_PIXEL";
195
+
190
196
  this [_lineFillTextureProperties] .setup ();
191
197
 
192
198
  this .getLineFillTextureProperties = function () { return this [_lineFillTextureProperties]; };
@@ -195,6 +201,41 @@ function (Appearance,
195
201
 
196
202
  return this [_lineFillTextureProperties];
197
203
  },
204
+ getLineTransformShader: function ()
205
+ {
206
+ this [_lineTransformShaderNode] = this .createShader ("LineTransformShader", "LineTransform");
207
+
208
+ this [_lineTransformShaderNode] .setUniforms ([
209
+ "viewport",
210
+ "modelViewProjectionMatrix",
211
+ "invModelViewProjectionMatrix",
212
+ "scale",
213
+ ]);
214
+
215
+ this [_lineTransformShaderNode] .setTransformFeedbackVaryings ([
216
+ "fogDepth0", "color0", "texCoord0", "vertex0",
217
+ "fogDepth1", "color1", "texCoord1", "vertex1",
218
+ "fogDepth2", "color2", "texCoord2", "vertex2",
219
+ ]);
220
+
221
+ this .getLineTransformShader = function () { return this [_lineTransformShaderNode]; };
222
+
223
+ Object .defineProperty (this, "getLineTransformShader", { enumerable: false });
224
+
225
+ return this [_lineTransformShaderNode];
226
+ },
227
+ getLineTransformFeedback: function ()
228
+ {
229
+ const gl = this .getContext ();
230
+
231
+ this [_lineTransformFeedback] = gl .createTransformFeedback ();
232
+
233
+ this .getLineTransformFeedback = function () { return this [_lineTransformFeedback]; };
234
+
235
+ Object .defineProperty (this, "getLineTransformFeedback", { enumerable: false });
236
+
237
+ return this [_lineTransformFeedback];
238
+ },
198
239
  };
199
240
 
200
241
  return X3DShapeContext;
@@ -66,7 +66,7 @@ function ($,
66
66
  function X3DTextContext ()
67
67
  {
68
68
  this [_fontCache] = new Map ();
69
- this [_glyphCache] = new Map (); // [font] [primitveQuality] [glyphIndex]
69
+ this [_glyphCache] = new Map (); // [font] [primitiveQuality] [glyphIndex]
70
70
  }
71
71
 
72
72
  X3DTextContext .prototype =
@@ -102,30 +102,21 @@ function ($,
102
102
  setFont: function (deferred, error, font)
103
103
  {
104
104
  if (error)
105
- {
106
105
  deferred .reject (error);
107
- }
108
106
  else
109
- {
110
- // // Workaround to initialize composite glyphs.
111
- // for (let i = 0, length = font .numGlyphs; i < length; ++ i)
112
- // font .glyphs .get (i) .getPath (0, 0, 1);
113
-
114
- // Resolve callbacks.
115
107
  deferred .resolve (font);
116
- }
117
108
  },
118
- getGlyph: function (font, primitveQuality, glyphIndex)
109
+ getGlyph: function (font, primitiveQuality, glyphIndex)
119
110
  {
120
111
  let cachedFont = this [_glyphCache] .get (font);
121
112
 
122
113
  if (!cachedFont)
123
114
  this [_glyphCache] .set (font, cachedFont = [ ]);
124
115
 
125
- let cachedQuality = cachedFont [primitveQuality];
116
+ let cachedQuality = cachedFont [primitiveQuality];
126
117
 
127
118
  if (!cachedQuality)
128
- cachedQuality = cachedFont [primitveQuality] = [ ];
119
+ cachedQuality = cachedFont [primitiveQuality] = [ ];
129
120
 
130
121
  let cachedGlyph = cachedQuality [glyphIndex];
131
122