@lightningjs/renderer 2.13.0 → 3.0.0-beta1

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 (539) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +27 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +7 -1
  8. package/dist/exports/canvas.js +7 -1
  9. package/dist/exports/canvas.js.map +1 -1
  10. package/dist/exports/core-api.d.ts +74 -0
  11. package/dist/exports/core-api.js +96 -0
  12. package/dist/exports/core-api.js.map +1 -0
  13. package/dist/exports/index.d.ts +15 -8
  14. package/dist/exports/index.js +7 -4
  15. package/dist/exports/index.js.map +1 -1
  16. package/dist/exports/main-api.d.ts +30 -0
  17. package/dist/exports/main-api.js +45 -0
  18. package/dist/exports/main-api.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +28 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +9 -1
  23. package/dist/exports/webgl.js +9 -1
  24. package/dist/exports/webgl.js.map +1 -1
  25. package/dist/src/core/CoreExtension.d.ts +12 -0
  26. package/{src/core/renderers/CoreShader.ts → dist/src/core/CoreExtension.js} +29 -41
  27. package/dist/src/core/CoreExtension.js.map +1 -0
  28. package/dist/src/core/CoreNode.d.ts +9 -5
  29. package/dist/src/core/CoreNode.js +27 -10
  30. package/dist/src/core/CoreNode.js.map +1 -1
  31. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  32. package/dist/src/core/CoreShaderManager.js +110 -97
  33. package/dist/src/core/CoreShaderManager.js.map +1 -1
  34. package/dist/src/core/CoreStuff.d.ts +1 -0
  35. package/dist/src/core/CoreStuff.js +138 -0
  36. package/dist/src/core/CoreStuff.js.map +1 -0
  37. package/dist/src/core/CoreTextNode.js +1 -1
  38. package/dist/src/core/CoreTextNode.js.map +1 -1
  39. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  40. package/dist/src/core/CoreTexturizer.js +47 -0
  41. package/dist/src/core/CoreTexturizer.js.map +1 -0
  42. package/dist/src/core/LngNode.d.ts +736 -0
  43. package/dist/src/core/LngNode.js +1174 -0
  44. package/dist/src/core/LngNode.js.map +1 -0
  45. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  46. package/dist/src/core/Matrix2DContext.js +45 -0
  47. package/dist/src/core/Matrix2DContext.js.map +1 -0
  48. package/dist/src/core/ShaderNode.d.ts +10 -0
  49. package/dist/src/core/ShaderNode.js +30 -0
  50. package/dist/src/core/ShaderNode.js.map +1 -0
  51. package/dist/src/core/Stage.d.ts +11 -14
  52. package/dist/src/core/Stage.js +22 -25
  53. package/dist/src/core/Stage.js.map +1 -1
  54. package/dist/src/core/TextNode.d.ts +103 -0
  55. package/dist/src/core/TextNode.js +331 -0
  56. package/dist/src/core/TextNode.js.map +1 -0
  57. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  58. package/dist/src/core/animations/CoreAnimation.js +6 -52
  59. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  60. package/dist/src/core/lib/Coords.d.ts +14 -0
  61. package/dist/src/core/lib/Coords.js +55 -0
  62. package/dist/src/core/lib/Coords.js.map +1 -0
  63. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  64. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  65. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  66. package/dist/src/core/lib/glm/common.d.ts +162 -0
  67. package/dist/src/core/lib/glm/common.js +81 -0
  68. package/dist/src/core/lib/glm/common.js.map +1 -0
  69. package/dist/src/core/lib/glm/index.d.ts +11 -0
  70. package/dist/src/core/lib/glm/index.js +30 -0
  71. package/dist/src/core/lib/glm/index.js.map +1 -0
  72. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  73. package/dist/src/core/lib/glm/mat2.js +396 -0
  74. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  75. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  76. package/dist/src/core/lib/glm/mat2d.js +442 -0
  77. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  78. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  79. package/dist/src/core/lib/glm/mat3.js +680 -0
  80. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  81. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  82. package/dist/src/core/lib/glm/mat4.js +1802 -0
  83. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  84. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  85. package/dist/src/core/lib/glm/quat.js +693 -0
  86. package/dist/src/core/lib/glm/quat.js.map +1 -0
  87. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  88. package/dist/src/core/lib/glm/quat2.js +754 -0
  89. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  90. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  91. package/dist/src/core/lib/glm/vec2.js +569 -0
  92. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  93. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  94. package/dist/src/core/lib/glm/vec3.js +720 -0
  95. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  96. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  97. package/dist/src/core/lib/glm/vec4.js +608 -0
  98. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  99. package/dist/src/core/lib/textureCompression.js +0 -1
  100. package/dist/src/core/lib/textureCompression.js.map +1 -1
  101. package/dist/src/core/lib/utils.d.ts +4 -0
  102. package/dist/src/core/lib/utils.js +26 -0
  103. package/dist/src/core/lib/utils.js.map +1 -1
  104. package/dist/src/core/platform.js +1 -0
  105. package/dist/src/core/platform.js.map +1 -1
  106. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  107. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  108. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  109. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  110. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  111. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  112. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  113. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  114. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  115. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  116. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  117. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  118. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  119. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  120. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  121. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  122. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  123. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  124. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  125. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  126. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  127. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  128. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  129. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  130. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  131. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  132. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  133. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  134. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  135. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  137. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  138. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  140. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  141. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  143. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  144. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  146. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  147. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  149. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  150. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  152. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  153. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  155. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  156. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  158. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  159. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  161. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  162. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  163. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  164. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  165. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  166. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  167. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  168. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  169. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  170. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  171. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  172. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  173. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  174. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  175. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  176. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  177. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  178. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  179. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  180. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  181. package/dist/src/core/scene/Scene.d.ts +59 -0
  182. package/dist/src/core/scene/Scene.js +106 -0
  183. package/dist/src/core/scene/Scene.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  185. package/dist/src/core/shaders/canvas/Border.js +57 -0
  186. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  187. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  188. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  189. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  190. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  191. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  192. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  193. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  194. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  195. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  196. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  197. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  198. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  199. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  200. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  201. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  202. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  203. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  204. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  205. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  206. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  207. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  208. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  209. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  210. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  211. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  212. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  213. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  214. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  215. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  216. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  217. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  218. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  219. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  220. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  221. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  222. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  223. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  224. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  225. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  226. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  227. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  228. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  229. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  230. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  231. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  232. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  233. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  234. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  235. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  236. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  237. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  238. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  239. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  240. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  241. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  242. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  243. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/Border.js +87 -0
  246. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  248. package/dist/src/core/shaders/webgl/Default.js +86 -0
  249. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  251. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  252. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  253. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  254. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  255. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  256. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  257. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  258. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  259. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  260. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  261. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  262. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  263. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  264. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  265. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  266. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  267. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  268. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  269. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  270. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  271. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  272. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  273. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  274. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  275. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  276. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  277. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  278. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  279. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  280. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  281. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  282. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  283. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  284. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  285. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  286. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  287. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  288. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  289. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  290. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  291. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  292. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  293. package/dist/src/core/textures/Texture.d.ts +1 -1
  294. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  295. package/dist/src/main-api/ICoreDriver.js +20 -0
  296. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  297. package/dist/src/main-api/INode.d.ts +9 -9
  298. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  299. package/dist/src/main-api/IRenderDriver.js +20 -0
  300. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  301. package/dist/src/main-api/IShaderController.d.ts +14 -0
  302. package/dist/src/main-api/IShaderController.js +30 -0
  303. package/dist/src/main-api/IShaderController.js.map +1 -0
  304. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  305. package/dist/src/main-api/IShaderNode.js +19 -0
  306. package/dist/src/main-api/IShaderNode.js.map +1 -0
  307. package/dist/src/main-api/Renderer.d.ts +8 -91
  308. package/dist/src/main-api/Renderer.js +3 -54
  309. package/dist/src/main-api/Renderer.js.map +1 -1
  310. package/dist/src/main-api/RendererMain.d.ts +375 -0
  311. package/dist/src/main-api/RendererMain.js +365 -0
  312. package/dist/src/main-api/RendererMain.js.map +1 -0
  313. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  314. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  315. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  316. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  317. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  318. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  319. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  320. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  321. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  322. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  323. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  324. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  325. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  326. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  327. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  328. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  329. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  330. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  331. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  332. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  333. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  334. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  335. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  336. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  337. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  338. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  339. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  340. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  341. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  342. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  343. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  344. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  345. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  346. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  347. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  348. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  349. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  350. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  351. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  352. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  353. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  354. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  355. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  356. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  357. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  358. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  359. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  360. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  361. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  362. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  363. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  364. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  365. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  366. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  367. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  368. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  369. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  370. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  371. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  372. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  373. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  374. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  375. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  376. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  377. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  378. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  379. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  380. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  381. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  382. package/dist/src/render-drivers/utils.d.ts +12 -0
  383. package/dist/src/render-drivers/utils.js +69 -0
  384. package/dist/src/render-drivers/utils.js.map +1 -0
  385. package/dist/src/utils.d.ts +6 -0
  386. package/dist/src/utils.js +18 -0
  387. package/dist/src/utils.js.map +1 -1
  388. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  389. package/exports/canvas-shaders.ts +28 -0
  390. package/exports/canvas.ts +45 -39
  391. package/exports/index.ts +89 -89
  392. package/exports/inspector.ts +24 -24
  393. package/exports/utils.ts +44 -44
  394. package/exports/webgl-shaders.ts +28 -0
  395. package/exports/webgl.ts +50 -38
  396. package/package.json +4 -1
  397. package/scripts/please-use-pnpm.js +13 -13
  398. package/src/common/CommonTypes.ts +146 -146
  399. package/src/common/EventEmitter.ts +77 -77
  400. package/src/common/IAnimationController.ts +92 -92
  401. package/src/common/IEventEmitter.ts +28 -28
  402. package/src/core/CoreNode.test.ts +203 -202
  403. package/src/core/CoreNode.ts +2476 -2455
  404. package/src/core/CoreShaderManager.ts +193 -292
  405. package/src/core/CoreTextNode.ts +448 -455
  406. package/src/core/CoreTextureManager.ts +597 -597
  407. package/src/core/Stage.ts +740 -743
  408. package/src/core/TextureMemoryManager.ts +395 -395
  409. package/src/core/animations/AnimationManager.ts +38 -38
  410. package/src/core/animations/CoreAnimation.ts +284 -340
  411. package/src/core/animations/CoreAnimationController.ts +157 -157
  412. package/src/core/lib/ContextSpy.ts +41 -41
  413. package/src/core/lib/ImageWorker.ts +279 -279
  414. package/src/core/lib/Matrix3d.ts +244 -244
  415. package/src/core/lib/RenderCoords.ts +86 -86
  416. package/src/core/lib/WebGlContextWrapper.ts +1324 -1332
  417. package/src/core/lib/textureCompression.ts +152 -152
  418. package/src/core/lib/textureSvg.ts +78 -78
  419. package/src/core/lib/utils.ts +361 -310
  420. package/src/core/lib/validateImageBitmap.ts +76 -76
  421. package/src/core/platform.ts +64 -63
  422. package/src/core/renderers/CoreContextTexture.ts +43 -43
  423. package/src/core/renderers/CoreRenderOp.ts +22 -22
  424. package/src/core/renderers/CoreRenderer.ts +107 -115
  425. package/src/core/renderers/CoreShaderNode.ts +171 -0
  426. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +23 -48
  427. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  428. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  429. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +153 -153
  430. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -231
  431. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -69
  432. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +86 -86
  433. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +50 -50
  434. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +301 -301
  435. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +145 -125
  436. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +715 -815
  437. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  438. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  439. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  440. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  441. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -143
  442. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  443. package/src/core/shaders/canvas/Border.ts +78 -0
  444. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  445. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  446. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  447. package/src/core/shaders/canvas/Rounded.ts +55 -0
  448. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  449. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  450. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  451. package/src/core/shaders/canvas/Shadow.ts +52 -0
  452. package/src/core/shaders/canvas/utils/render.ts +151 -0
  453. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  454. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  455. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  456. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  457. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  458. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  459. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  460. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  461. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  462. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  463. package/src/core/shaders/webgl/Border.ts +96 -0
  464. package/src/core/shaders/webgl/Default.ts +89 -0
  465. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  466. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  467. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  468. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  469. package/src/core/shaders/webgl/Rounded.ts +117 -0
  470. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  471. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  472. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  473. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  474. package/src/core/shaders/webgl/Shadow.ts +115 -0
  475. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  476. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  477. package/src/core/text-rendering/TrFontManager.ts +183 -183
  478. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  479. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  480. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  481. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  482. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  483. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  484. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  485. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  486. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +815 -808
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +841 -853
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  489. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  490. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  491. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  492. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  493. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  494. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  495. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  496. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  497. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  498. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  499. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  500. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  501. package/src/core/text-rendering/renderers/TextRenderer.ts +550 -557
  502. package/src/core/textures/ColorTexture.ts +102 -102
  503. package/src/core/textures/ImageTexture.ts +376 -376
  504. package/src/core/textures/NoiseTexture.ts +104 -104
  505. package/src/core/textures/RenderTexture.ts +85 -85
  506. package/src/core/textures/SubTexture.ts +205 -205
  507. package/src/core/textures/Texture.ts +337 -337
  508. package/src/core/utils.ts +227 -227
  509. package/src/env.d.ts +7 -7
  510. package/src/main-api/INode.ts +99 -101
  511. package/src/main-api/Inspector.ts +522 -522
  512. package/src/main-api/Renderer.ts +649 -751
  513. package/src/main-api/utils.ts +45 -45
  514. package/src/utils.ts +267 -248
  515. package/COPYING +0 -1
  516. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  517. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  518. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  519. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  520. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  521. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  522. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  523. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  524. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  525. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  526. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  527. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  528. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  529. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  530. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  531. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  532. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  533. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  534. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  535. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  536. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  537. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  538. package/src/main-api/DynamicShaderController.ts +0 -104
  539. package/src/main-api/ShaderController.ts +0 -80
package/src/core/utils.ts CHANGED
@@ -1,227 +1,227 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
- /**
21
- * Core Utility Functions
22
- *
23
- * @module
24
- */
25
-
26
- export const EPSILON = 0.000001;
27
- export let ARRAY_TYPE =
28
- typeof Float32Array !== 'undefined' ? Float32Array : Array;
29
- export const RANDOM = Math.random;
30
- export const ANGLE_ORDER = 'zyx';
31
- const degree = Math.PI / 180;
32
-
33
- export const setMatrixArrayType = (
34
- type: Float32ArrayConstructor | ArrayConstructor,
35
- ) => {
36
- ARRAY_TYPE = type;
37
- };
38
-
39
- export const toRadian = (a: number) => {
40
- return a * degree;
41
- };
42
-
43
- export const equals = (a: number, b: number) => {
44
- return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));
45
- };
46
-
47
- export const rand = (min: number, max: number) => {
48
- return Math.floor(Math.random() * (max - min + 1) + min);
49
- };
50
-
51
- export const isPowerOfTwo = (value: number) => {
52
- return value && !(value & (value - 1));
53
- };
54
-
55
- const getTimingBezier = (
56
- a: number,
57
- b: number,
58
- c: number,
59
- d: number,
60
- ): ((time: number) => number | undefined) => {
61
- const xc = 3.0 * a;
62
- const xb = 3.0 * (c - a) - xc;
63
- const xa = 1.0 - xc - xb;
64
- const yc = 3.0 * b;
65
- const yb = 3.0 * (d - b) - yc;
66
- const ya = 1.0 - yc - yb;
67
-
68
- return function (time: number): number | undefined {
69
- if (time >= 1.0) {
70
- return 1;
71
- }
72
- if (time <= 0) {
73
- return 0;
74
- }
75
-
76
- let t = 0.5,
77
- cbx,
78
- cbxd,
79
- dx;
80
-
81
- for (let it = 0; it < 20; it++) {
82
- cbx = t * (t * (t * xa + xb) + xc);
83
- dx = time - cbx;
84
- if (dx > -1e-8 && dx < 1e-8) {
85
- return t * (t * (t * ya + yb) + yc);
86
- }
87
-
88
- // Cubic bezier derivative.
89
- cbxd = t * (t * (3 * xa) + 2 * xb) + xc;
90
-
91
- if (cbxd > 1e-10 && cbxd < 1e-10) {
92
- // Problematic. Fall back to binary search method.
93
- break;
94
- }
95
-
96
- t += dx / cbxd;
97
- }
98
-
99
- // Fallback: binary search method. This is more reliable when there are near-0 slopes.
100
- let minT = 0;
101
- let maxT = 1;
102
- for (let it = 0; it < 20; it++) {
103
- t = 0.5 * (minT + maxT);
104
-
105
- cbx = t * (t * (t * xa + xb) + xc);
106
-
107
- dx = time - cbx;
108
- if (dx > -1e-8 && dx < 1e-8) {
109
- // Solution found!
110
- return t * (t * (t * ya + yb) + yc);
111
- }
112
-
113
- if (dx < 0) {
114
- maxT = t;
115
- } else {
116
- minT = t;
117
- }
118
- }
119
- };
120
- };
121
-
122
- interface TimingFunctionMap {
123
- [key: string]: (time: number) => number | undefined;
124
- }
125
-
126
- type TimingLookupArray = number[];
127
- interface TimingLookup {
128
- [key: string]: TimingLookupArray;
129
- }
130
-
131
- const timingMapping: TimingFunctionMap = {};
132
-
133
- const timingLookup: TimingLookup = {
134
- ease: [0.25, 0.1, 0.25, 1.0],
135
- 'ease-in': [0.42, 0, 1.0, 1.0],
136
- 'ease-out': [0, 0, 0.58, 1.0],
137
- 'ease-in-out': [0.42, 0, 0.58, 1.0],
138
- 'ease-in-sine': [0.12, 0, 0.39, 0],
139
- 'ease-out-sine': [0.12, 0, 0.39, 0],
140
- 'ease-in-out-sine': [0.37, 0, 0.63, 1],
141
- 'ease-in-cubic': [0.32, 0, 0.67, 0],
142
- 'ease-out-cubic': [0.33, 1, 0.68, 1],
143
- 'ease-in-out-cubic': [0.65, 0, 0.35, 1],
144
- 'ease-in-circ': [0.55, 0, 1, 0.45],
145
- 'ease-out-circ': [0, 0.55, 0.45, 1],
146
- 'ease-in-out-circ': [0.85, 0, 0.15, 1],
147
- 'ease-in-back': [0.36, 0, 0.66, -0.56],
148
- 'ease-out-back': [0.34, 1.56, 0.64, 1],
149
- 'ease-in-out-back': [0.68, -0.6, 0.32, 1.6],
150
- };
151
-
152
- const defaultTiming = (t: number): number => t;
153
-
154
- const parseCubicBezier = (str: string) => {
155
- //cubic-bezier(0.84, 0.52, 0.56, 0.6)
156
- const regex = /-?\d*\.?\d+/g;
157
- const match = str.match(regex);
158
-
159
- if (match) {
160
- const [num1, num2, num3, num4] = match;
161
- const a = parseFloat(num1 || '0.42');
162
- const b = parseFloat(num2 || '0');
163
- const c = parseFloat(num3 || '1');
164
- const d = parseFloat(num4 || '1');
165
-
166
- const timing = getTimingBezier(a, b, c, d);
167
- timingMapping[str] = timing;
168
-
169
- return timing;
170
- }
171
-
172
- // parse failed, return linear
173
- console.warn('Unknown cubic-bezier timing: ' + str);
174
- return defaultTiming;
175
- };
176
-
177
- export const getTimingFunction = (
178
- str: string,
179
- ): ((time: number) => number | undefined) => {
180
- if (str === 'linear') {
181
- return defaultTiming;
182
- }
183
-
184
- if (timingMapping[str] !== undefined) {
185
- return timingMapping[str] || defaultTiming;
186
- }
187
-
188
- if (str === 'step-start') {
189
- return () => {
190
- return 1;
191
- };
192
- }
193
-
194
- if (str === 'step-end') {
195
- return (time: number) => {
196
- return time === 1 ? 1 : 0;
197
- };
198
- }
199
-
200
- const lookup = timingLookup[str];
201
- if (lookup !== undefined) {
202
- const [a, b, c, d] = lookup;
203
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
204
- // @ts-ignore - TS doesn't understand that we've checked for undefined
205
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
206
- const timing = getTimingBezier(a, b, c, d);
207
- timingMapping[str] = timing;
208
- return timing;
209
- }
210
-
211
- if (str.startsWith('cubic-bezier')) {
212
- return parseCubicBezier(str);
213
- }
214
-
215
- console.warn('Unknown timing function: ' + str);
216
- return defaultTiming;
217
- };
218
-
219
- /**
220
- * Convert bytes to string of megabytes with 2 decimal points
221
- *
222
- * @param bytes
223
- * @returns
224
- */
225
- export function bytesToMb(bytes: number) {
226
- return (bytes / 1024 / 1024).toFixed(2);
227
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ /**
21
+ * Core Utility Functions
22
+ *
23
+ * @module
24
+ */
25
+
26
+ export const EPSILON = 0.000001;
27
+ export let ARRAY_TYPE =
28
+ typeof Float32Array !== 'undefined' ? Float32Array : Array;
29
+ export const RANDOM = Math.random;
30
+ export const ANGLE_ORDER = 'zyx';
31
+ const degree = Math.PI / 180;
32
+
33
+ export const setMatrixArrayType = (
34
+ type: Float32ArrayConstructor | ArrayConstructor,
35
+ ) => {
36
+ ARRAY_TYPE = type;
37
+ };
38
+
39
+ export const toRadian = (a: number) => {
40
+ return a * degree;
41
+ };
42
+
43
+ export const equals = (a: number, b: number) => {
44
+ return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));
45
+ };
46
+
47
+ export const rand = (min: number, max: number) => {
48
+ return Math.floor(Math.random() * (max - min + 1) + min);
49
+ };
50
+
51
+ export const isPowerOfTwo = (value: number) => {
52
+ return value && !(value & (value - 1));
53
+ };
54
+
55
+ const getTimingBezier = (
56
+ a: number,
57
+ b: number,
58
+ c: number,
59
+ d: number,
60
+ ): ((time: number) => number | undefined) => {
61
+ const xc = 3.0 * a;
62
+ const xb = 3.0 * (c - a) - xc;
63
+ const xa = 1.0 - xc - xb;
64
+ const yc = 3.0 * b;
65
+ const yb = 3.0 * (d - b) - yc;
66
+ const ya = 1.0 - yc - yb;
67
+
68
+ return function (time: number): number | undefined {
69
+ if (time >= 1.0) {
70
+ return 1;
71
+ }
72
+ if (time <= 0) {
73
+ return 0;
74
+ }
75
+
76
+ let t = 0.5,
77
+ cbx,
78
+ cbxd,
79
+ dx;
80
+
81
+ for (let it = 0; it < 20; it++) {
82
+ cbx = t * (t * (t * xa + xb) + xc);
83
+ dx = time - cbx;
84
+ if (dx > -1e-8 && dx < 1e-8) {
85
+ return t * (t * (t * ya + yb) + yc);
86
+ }
87
+
88
+ // Cubic bezier derivative.
89
+ cbxd = t * (t * (3 * xa) + 2 * xb) + xc;
90
+
91
+ if (cbxd > 1e-10 && cbxd < 1e-10) {
92
+ // Problematic. Fall back to binary search method.
93
+ break;
94
+ }
95
+
96
+ t += dx / cbxd;
97
+ }
98
+
99
+ // Fallback: binary search method. This is more reliable when there are near-0 slopes.
100
+ let minT = 0;
101
+ let maxT = 1;
102
+ for (let it = 0; it < 20; it++) {
103
+ t = 0.5 * (minT + maxT);
104
+
105
+ cbx = t * (t * (t * xa + xb) + xc);
106
+
107
+ dx = time - cbx;
108
+ if (dx > -1e-8 && dx < 1e-8) {
109
+ // Solution found!
110
+ return t * (t * (t * ya + yb) + yc);
111
+ }
112
+
113
+ if (dx < 0) {
114
+ maxT = t;
115
+ } else {
116
+ minT = t;
117
+ }
118
+ }
119
+ };
120
+ };
121
+
122
+ interface TimingFunctionMap {
123
+ [key: string]: (time: number) => number | undefined;
124
+ }
125
+
126
+ type TimingLookupArray = number[];
127
+ interface TimingLookup {
128
+ [key: string]: TimingLookupArray;
129
+ }
130
+
131
+ const timingMapping: TimingFunctionMap = {};
132
+
133
+ const timingLookup: TimingLookup = {
134
+ ease: [0.25, 0.1, 0.25, 1.0],
135
+ 'ease-in': [0.42, 0, 1.0, 1.0],
136
+ 'ease-out': [0, 0, 0.58, 1.0],
137
+ 'ease-in-out': [0.42, 0, 0.58, 1.0],
138
+ 'ease-in-sine': [0.12, 0, 0.39, 0],
139
+ 'ease-out-sine': [0.12, 0, 0.39, 0],
140
+ 'ease-in-out-sine': [0.37, 0, 0.63, 1],
141
+ 'ease-in-cubic': [0.32, 0, 0.67, 0],
142
+ 'ease-out-cubic': [0.33, 1, 0.68, 1],
143
+ 'ease-in-out-cubic': [0.65, 0, 0.35, 1],
144
+ 'ease-in-circ': [0.55, 0, 1, 0.45],
145
+ 'ease-out-circ': [0, 0.55, 0.45, 1],
146
+ 'ease-in-out-circ': [0.85, 0, 0.15, 1],
147
+ 'ease-in-back': [0.36, 0, 0.66, -0.56],
148
+ 'ease-out-back': [0.34, 1.56, 0.64, 1],
149
+ 'ease-in-out-back': [0.68, -0.6, 0.32, 1.6],
150
+ };
151
+
152
+ const defaultTiming = (t: number): number => t;
153
+
154
+ const parseCubicBezier = (str: string) => {
155
+ //cubic-bezier(0.84, 0.52, 0.56, 0.6)
156
+ const regex = /-?\d*\.?\d+/g;
157
+ const match = str.match(regex);
158
+
159
+ if (match) {
160
+ const [num1, num2, num3, num4] = match;
161
+ const a = parseFloat(num1 || '0.42');
162
+ const b = parseFloat(num2 || '0');
163
+ const c = parseFloat(num3 || '1');
164
+ const d = parseFloat(num4 || '1');
165
+
166
+ const timing = getTimingBezier(a, b, c, d);
167
+ timingMapping[str] = timing;
168
+
169
+ return timing;
170
+ }
171
+
172
+ // parse failed, return linear
173
+ console.warn('Unknown cubic-bezier timing: ' + str);
174
+ return defaultTiming;
175
+ };
176
+
177
+ export const getTimingFunction = (
178
+ str: string,
179
+ ): ((time: number) => number | undefined) => {
180
+ if (str === 'linear') {
181
+ return defaultTiming;
182
+ }
183
+
184
+ if (timingMapping[str] !== undefined) {
185
+ return timingMapping[str] || defaultTiming;
186
+ }
187
+
188
+ if (str === 'step-start') {
189
+ return () => {
190
+ return 1;
191
+ };
192
+ }
193
+
194
+ if (str === 'step-end') {
195
+ return (time: number) => {
196
+ return time === 1 ? 1 : 0;
197
+ };
198
+ }
199
+
200
+ const lookup = timingLookup[str];
201
+ if (lookup !== undefined) {
202
+ const [a, b, c, d] = lookup;
203
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
204
+ // @ts-ignore - TS doesn't understand that we've checked for undefined
205
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
206
+ const timing = getTimingBezier(a, b, c, d);
207
+ timingMapping[str] = timing;
208
+ return timing;
209
+ }
210
+
211
+ if (str.startsWith('cubic-bezier')) {
212
+ return parseCubicBezier(str);
213
+ }
214
+
215
+ console.warn('Unknown timing function: ' + str);
216
+ return defaultTiming;
217
+ };
218
+
219
+ /**
220
+ * Convert bytes to string of megabytes with 2 decimal points
221
+ *
222
+ * @param bytes
223
+ * @returns
224
+ */
225
+ export function bytesToMb(bytes: number) {
226
+ return (bytes / 1024 / 1024).toFixed(2);
227
+ }
package/src/env.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- interface ImportMetaEnv {
2
- readonly PROD: boolean;
3
- }
4
-
5
- interface ImportMeta {
6
- readonly env: ImportMetaEnv;
7
- }
1
+ interface ImportMetaEnv {
2
+ readonly PROD: boolean;
3
+ }
4
+
5
+ interface ImportMeta {
6
+ readonly env: ImportMetaEnv;
7
+ }
@@ -1,101 +1,99 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2024 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import type { IAnimationController } from '../common/IAnimationController.js';
20
- import {
21
- CoreNode,
22
- type CoreNodeAnimateProps,
23
- type CoreNodeProps,
24
- } from '../core/CoreNode.js';
25
- import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
26
- import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
27
- import type { BaseShaderController } from './ShaderController.js';
28
-
29
- /**
30
- * A visual Node in the Renderer scene graph.
31
- *
32
- * @remarks
33
- * A Node is a basic building block of the Renderer scene graph. It can be a
34
- * container for other Nodes, or it can be a leaf Node that renders a solid
35
- * color, gradient, image, or specific texture, using a specific shader.
36
- *
37
- * For text rendering Nodes, see {@link ITextNode}.
38
- *
39
- * ## INode vs CoreNode
40
- * CoreNode is the name of the class for a Renderer Node and is only directly
41
- * used internally by the Renderer. INode describes the public API of a
42
- * Renderer Node including the ability to be tied to a specific Shader.
43
- *
44
- * Users of the Renderer API, should generally interact with INode objects
45
- * instead of CoreNode objects.
46
- */
47
- export interface INode<SC extends BaseShaderController = BaseShaderController>
48
- extends Omit<CoreNode, 'shader' | 'animate' | 'parent'> {
49
- shader: SC;
50
- animate(
51
- props: Partial<INodeAnimateProps<SC>>,
52
- settings: Partial<AnimationSettings>,
53
- ): IAnimationController;
54
- parent: INode | null;
55
- }
56
-
57
- /**
58
- * Properties used to animate() a Node
59
- */
60
- export interface INodeAnimateProps<
61
- SC extends BaseShaderController = BaseShaderController,
62
- > extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
63
- shaderProps: Partial<SC['props']>;
64
- }
65
-
66
- /**
67
- * Properties used to create a new Node
68
- */
69
- export interface INodeProps<
70
- SC extends BaseShaderController = BaseShaderController,
71
- > extends Omit<CoreNodeProps, 'shader' | 'parent'> {
72
- shader: SC;
73
- parent: INode | null;
74
- }
75
-
76
- /**
77
- * A visual Node in the Renderer scene graph that renders text.
78
- *
79
- * @remarks
80
- * A Text Node is a special type of Node that renders text using a specific
81
- * text renderer, such as Web/Canvas or Signed Distance Field (SDF) text.
82
- *
83
- * For non-text rendering, see {@link INode}.
84
- *
85
- * Users of the Renderer API, should generally interact with ITextNode objects
86
- * instead of CoreTextNode objects.
87
- */
88
- export interface ITextNode extends Omit<CoreTextNode, 'animate' | 'parent'> {
89
- animate(
90
- props: Partial<INodeAnimateProps<BaseShaderController>>,
91
- settings: Partial<AnimationSettings>,
92
- ): IAnimationController;
93
- parent: INode | null;
94
- }
95
-
96
- /**
97
- * Properties used to create a new Text Node
98
- */
99
- export interface ITextNodeProps extends Omit<CoreTextNodeProps, 'parent'> {
100
- parent: INode | null;
101
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2024 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import type { IAnimationController } from '../common/IAnimationController.js';
20
+ import {
21
+ CoreNode,
22
+ type CoreNodeAnimateProps,
23
+ type CoreNodeProps,
24
+ } from '../core/CoreNode.js';
25
+ import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
26
+ import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
27
+ import type { CoreShaderNode } from '../core/renderers/CoreShaderNode.js';
28
+
29
+ /**
30
+ * A visual Node in the Renderer scene graph.
31
+ *
32
+ * @remarks
33
+ * A Node is a basic building block of the Renderer scene graph. It can be a
34
+ * container for other Nodes, or it can be a leaf Node that renders a solid
35
+ * color, gradient, image, or specific texture, using a specific shader.
36
+ *
37
+ * For text rendering Nodes, see {@link ITextNode}.
38
+ *
39
+ * ## INode vs CoreNode
40
+ * CoreNode is the name of the class for a Renderer Node and is only directly
41
+ * used internally by the Renderer. INode describes the public API of a
42
+ * Renderer Node including the ability to be tied to a specific Shader.
43
+ *
44
+ * Users of the Renderer API, should generally interact with INode objects
45
+ * instead of CoreNode objects.
46
+ */
47
+ export interface INode<ShaderNode extends CoreShaderNode = CoreShaderNode>
48
+ extends Omit<CoreNode, 'shader' | 'animate' | 'parent'> {
49
+ shader: ShaderNode;
50
+ animate(
51
+ props: Partial<INodeAnimateProps<ShaderNode>>,
52
+ settings: Partial<AnimationSettings>,
53
+ ): IAnimationController;
54
+ parent: INode | null;
55
+ }
56
+
57
+ /**
58
+ * Properties used to animate() a Node
59
+ */
60
+ export interface INodeAnimateProps<ShNode extends CoreShaderNode>
61
+ extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
62
+ shaderProps: Partial<ShNode['props']>;
63
+ }
64
+
65
+ /**
66
+ * Properties used to create a new Node
67
+ */
68
+ export interface INodeProps<ShNode extends CoreShaderNode>
69
+ extends Omit<CoreNodeProps, 'shader' | 'parent'> {
70
+ shader: ShNode;
71
+ parent: INode | null;
72
+ }
73
+
74
+ /**
75
+ * A visual Node in the Renderer scene graph that renders text.
76
+ *
77
+ * @remarks
78
+ * A Text Node is a special type of Node that renders text using a specific
79
+ * text renderer, such as Web/Canvas or Signed Distance Field (SDF) text.
80
+ *
81
+ * For non-text rendering, see {@link INode}.
82
+ *
83
+ * Users of the Renderer API, should generally interact with ITextNode objects
84
+ * instead of CoreTextNode objects.
85
+ */
86
+ export interface ITextNode extends Omit<CoreTextNode, 'animate' | 'parent'> {
87
+ animate(
88
+ props: Partial<INodeAnimateProps<CoreShaderNode>>,
89
+ settings: Partial<AnimationSettings>,
90
+ ): IAnimationController;
91
+ parent: INode | null;
92
+ }
93
+
94
+ /**
95
+ * Properties used to create a new Text Node
96
+ */
97
+ export interface ITextNodeProps extends Omit<CoreTextNodeProps, 'parent'> {
98
+ parent: INode | null;
99
+ }