@lightningjs/renderer 0.3.0 → 0.3.2

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 (295) hide show
  1. package/NOTICE +1 -2
  2. package/dist/exports/core-api.js +1 -1
  3. package/dist/exports/main-api.js +1 -1
  4. package/dist/exports/utils.js +1 -1
  5. package/dist/src/common/CommonTypes.js +1 -1
  6. package/dist/src/common/EventEmitter.js +1 -1
  7. package/dist/src/common/IAnimationController.js +1 -1
  8. package/dist/src/core/CoreExtension.js +1 -1
  9. package/dist/src/core/CoreNode.d.ts +5 -1
  10. package/dist/src/core/CoreNode.js +9 -2
  11. package/dist/src/core/CoreNode.js.map +1 -1
  12. package/dist/src/core/CoreTextNode.d.ts +2 -1
  13. package/dist/src/core/CoreTextNode.js +3 -3
  14. package/dist/src/core/CoreTextNode.js.map +1 -1
  15. package/dist/src/core/CoreTextureManager.js +1 -1
  16. package/dist/src/core/Matrix2DContext.js +1 -1
  17. package/dist/src/core/Stage.d.ts +2 -1
  18. package/dist/src/core/Stage.js +20 -6
  19. package/dist/src/core/Stage.js.map +1 -1
  20. package/dist/src/core/animations/AnimationManager.js +1 -1
  21. package/dist/src/core/animations/CoreAnimation.js +1 -1
  22. package/dist/src/core/animations/CoreAnimationController.js +1 -1
  23. package/dist/src/core/lib/glm/common.js +1 -1
  24. package/dist/src/core/lib/glm/index.js +1 -1
  25. package/dist/src/core/lib/glm/mat2.js +1 -1
  26. package/dist/src/core/lib/glm/mat2d.js +1 -1
  27. package/dist/src/core/lib/glm/mat3.js +1 -1
  28. package/dist/src/core/lib/glm/mat4.js +1 -1
  29. package/dist/src/core/lib/glm/quat.js +1 -1
  30. package/dist/src/core/lib/glm/quat2.js +1 -1
  31. package/dist/src/core/lib/glm/vec2.js +1 -1
  32. package/dist/src/core/lib/glm/vec3.js +1 -1
  33. package/dist/src/core/lib/glm/vec4.js +1 -1
  34. package/dist/src/core/lib/utils.d.ts +1 -0
  35. package/dist/src/core/lib/utils.js +10 -1
  36. package/dist/src/core/lib/utils.js.map +1 -1
  37. package/dist/src/core/platform.js +1 -1
  38. package/dist/src/core/renderers/CoreContextTexture.js +1 -1
  39. package/dist/src/core/renderers/CoreRenderOp.js +1 -1
  40. package/dist/src/core/renderers/CoreRenderer.d.ts +2 -0
  41. package/dist/src/core/renderers/CoreRenderer.js +1 -1
  42. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  43. package/dist/src/core/renderers/CoreShader.d.ts +2 -2
  44. package/dist/src/core/renderers/CoreShader.js +1 -1
  45. package/dist/src/core/renderers/CoreShader.js.map +1 -1
  46. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +1 -1
  47. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +1 -1
  48. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +4 -1
  49. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +22 -4
  50. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
  51. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +2 -2
  52. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +29 -15
  53. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  54. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +46 -3
  55. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +44 -9
  56. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  57. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +1 -1
  58. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -1
  59. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +1 -1
  60. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +1 -1
  61. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +1 -1
  62. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +1 -1
  63. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +8 -6
  64. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +20 -13
  65. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  66. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +5 -6
  67. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +12 -11
  68. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  69. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +1 -1
  70. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +1 -1
  71. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  72. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +16 -0
  73. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +5 -2
  74. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -1
  75. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +16 -0
  76. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +5 -2
  77. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +16 -0
  79. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +5 -2
  80. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +16 -0
  82. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +5 -2
  83. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -1
  84. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +16 -0
  85. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +5 -2
  86. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +1 -1
  88. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +12 -0
  89. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +100 -0
  90. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  91. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +28 -0
  92. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +3 -0
  93. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -1
  94. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +3 -0
  95. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +4 -1
  96. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -1
  97. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +19 -0
  98. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +5 -2
  99. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  100. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +38 -0
  101. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +116 -0
  102. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  103. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +11 -0
  104. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +4 -1
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -1
  106. package/dist/src/core/scene/Scene.js +1 -1
  107. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +1 -1
  108. package/dist/src/core/text-rendering/TrFontManager.js +1 -1
  109. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +1 -1
  110. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +1 -1
  111. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +1 -1
  112. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +1 -1
  113. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +1 -1
  114. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +2 -2
  115. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -2
  116. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  117. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +1 -1
  118. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -2
  119. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +3 -3
  120. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  121. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +1 -1
  122. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +1 -1
  123. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +1 -1
  124. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +1 -1
  125. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +1 -1
  126. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +1 -1
  127. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +1 -1
  128. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +1 -1
  129. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +2 -1
  130. package/dist/src/core/text-rendering/renderers/TextRenderer.js +1 -1
  131. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  132. package/dist/src/core/textures/ColorTexture.js +1 -1
  133. package/dist/src/core/textures/ImageTexture.js +1 -1
  134. package/dist/src/core/textures/NoiseTexture.js +1 -1
  135. package/dist/src/core/textures/SubTexture.js +1 -1
  136. package/dist/src/core/textures/Texture.js +1 -1
  137. package/dist/src/core/utils.js +1 -1
  138. package/dist/src/main-api/INode.d.ts +19 -0
  139. package/dist/src/main-api/INode.js +1 -1
  140. package/dist/src/main-api/IRenderDriver.js +1 -1
  141. package/dist/src/main-api/RendererMain.d.ts +1 -1
  142. package/dist/src/main-api/RendererMain.js +2 -1
  143. package/dist/src/main-api/RendererMain.js.map +1 -1
  144. package/dist/src/main-api/TextureRegistry.d.ts +33 -0
  145. package/dist/src/main-api/TextureRegistry.js +97 -0
  146. package/dist/src/main-api/TextureRegistry.js.map +1 -0
  147. package/dist/src/main-api/TextureUsageRegistry/TextureRegistry.d.ts +33 -0
  148. package/dist/src/main-api/TextureUsageRegistry/TextureRegistry.js +97 -0
  149. package/dist/src/main-api/TextureUsageRegistry/TextureRegistry.js.map +1 -0
  150. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  151. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  152. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  153. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  154. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  155. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  156. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  157. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  158. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  159. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +2 -0
  160. package/dist/src/render-drivers/main/MainOnlyNode.js +8 -1
  161. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  162. package/dist/src/render-drivers/main/MainOnlyTextNode.js +2 -1
  163. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
  164. package/dist/src/render-drivers/main/MainRenderDriver.js +1 -1
  165. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +3 -0
  166. package/dist/src/render-drivers/threadx/NodeStruct.js +10 -1
  167. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
  168. package/dist/src/render-drivers/threadx/SharedNode.d.ts +1 -0
  169. package/dist/src/render-drivers/threadx/SharedNode.js +2 -1
  170. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
  171. package/dist/src/render-drivers/threadx/TextNodeStruct.js +1 -1
  172. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +1 -1
  173. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +1 -1
  174. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +1 -1
  175. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +3 -1
  176. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -1
  177. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +1 -1
  178. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +2 -1
  179. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
  180. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +2 -1
  181. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
  182. package/dist/src/render-drivers/threadx/worker/renderer.js +2 -1
  183. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  184. package/dist/src/utils.d.ts +10 -2
  185. package/dist/src/utils.js +13 -3
  186. package/dist/src/utils.js.map +1 -1
  187. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  188. package/package.json +6 -5
  189. package/src/common/CommonTypes.ts +70 -0
  190. package/src/common/EventEmitter.ts +77 -0
  191. package/src/common/IAnimationController.ts +29 -0
  192. package/src/core/CoreExtension.ts +32 -0
  193. package/src/core/CoreNode.ts +700 -0
  194. package/src/core/CoreShaderManager.ts +111 -0
  195. package/src/core/CoreTextNode.ts +342 -0
  196. package/src/core/CoreTextureManager.ts +323 -0
  197. package/src/core/Matrix2DContext.ts +52 -0
  198. package/src/core/Stage.ts +280 -0
  199. package/src/core/animations/AnimationManager.ts +38 -0
  200. package/src/core/animations/CoreAnimation.ts +139 -0
  201. package/src/core/animations/CoreAnimationController.ts +117 -0
  202. package/src/core/lib/glm/common.ts +231 -0
  203. package/src/core/lib/glm/index.ts +31 -0
  204. package/src/core/lib/glm/mat2.ts +499 -0
  205. package/src/core/lib/glm/mat2d.ts +547 -0
  206. package/src/core/lib/glm/mat3.ts +849 -0
  207. package/src/core/lib/glm/mat4.ts +2169 -0
  208. package/src/core/lib/glm/quat.ts +828 -0
  209. package/src/core/lib/glm/quat2.ts +951 -0
  210. package/src/core/lib/glm/vec2.ts +671 -0
  211. package/src/core/lib/glm/vec3.ts +859 -0
  212. package/src/core/lib/glm/vec4.ts +708 -0
  213. package/src/core/lib/utils.ts +144 -0
  214. package/src/core/platform.ts +40 -0
  215. package/src/core/renderers/CoreContextTexture.ts +30 -0
  216. package/src/core/renderers/CoreRenderOp.ts +22 -0
  217. package/src/core/renderers/CoreRenderer.ts +66 -0
  218. package/src/core/renderers/CoreShader.ts +41 -0
  219. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +36 -0
  220. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +208 -0
  221. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +111 -0
  222. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +567 -0
  223. package/src/core/renderers/webgl/WebGlCoreShader.ts +328 -0
  224. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -0
  225. package/src/core/renderers/webgl/internal/RendererUtils.ts +134 -0
  226. package/src/core/renderers/webgl/internal/ShaderUtils.ts +135 -0
  227. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -0
  228. package/src/core/renderers/webgl/shaders/DefaultShader.ts +95 -0
  229. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -0
  230. package/src/core/renderers/webgl/shaders/DynamicShader.ts +430 -0
  231. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +168 -0
  232. package/src/core/renderers/webgl/shaders/SdfShader.ts +165 -0
  233. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -0
  234. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +86 -0
  235. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -0
  236. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -0
  237. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -0
  238. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +33 -0
  239. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +111 -0
  240. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +145 -0
  241. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +37 -0
  242. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +182 -0
  243. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +159 -0
  244. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +106 -0
  245. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +114 -0
  246. package/src/core/scene/Scene.ts +120 -0
  247. package/src/core/text-rendering/TextTextureRendererUtils.ts +189 -0
  248. package/src/core/text-rendering/TrFontManager.ts +96 -0
  249. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +128 -0
  250. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -0
  251. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +159 -0
  252. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +164 -0
  253. package/src/core/text-rendering/font-face-types/TrFontFace.ts +105 -0
  254. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +77 -0
  255. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +634 -0
  256. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +705 -0
  257. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +647 -0
  258. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -0
  259. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -0
  260. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -0
  261. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -0
  262. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +76 -0
  263. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -0
  264. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -0
  265. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +381 -0
  266. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.test.ts +136 -0
  267. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.ts +64 -0
  268. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +41 -0
  269. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +51 -0
  270. package/src/core/text-rendering/renderers/TextRenderer.ts +371 -0
  271. package/src/core/textures/ColorTexture.ts +85 -0
  272. package/src/core/textures/ImageTexture.ts +113 -0
  273. package/src/core/textures/NoiseTexture.ts +96 -0
  274. package/src/core/textures/SubTexture.ts +140 -0
  275. package/src/core/textures/Texture.ts +162 -0
  276. package/src/core/utils.ts +222 -0
  277. package/src/main-api/INode.ts +443 -0
  278. package/src/main-api/IRenderDriver.ts +58 -0
  279. package/src/main-api/RendererMain.ts +451 -0
  280. package/src/render-drivers/main/MainOnlyNode.ts +429 -0
  281. package/src/render-drivers/main/MainOnlyTextNode.ts +220 -0
  282. package/src/render-drivers/main/MainRenderDriver.ts +117 -0
  283. package/src/render-drivers/threadx/NodeStruct.ts +290 -0
  284. package/src/render-drivers/threadx/SharedNode.ts +95 -0
  285. package/src/render-drivers/threadx/TextNodeStruct.ts +166 -0
  286. package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +99 -0
  287. package/src/render-drivers/threadx/ThreadXMainNode.ts +151 -0
  288. package/src/render-drivers/threadx/ThreadXMainTextNode.ts +75 -0
  289. package/src/render-drivers/threadx/ThreadXRenderDriver.ts +247 -0
  290. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +82 -0
  291. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +232 -0
  292. package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +146 -0
  293. package/src/render-drivers/threadx/worker/renderer.ts +138 -0
  294. package/src/render-drivers/utils.ts +57 -0
  295. package/src/utils.ts +202 -0
@@ -0,0 +1,139 @@
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
+ import type { CoreNode } from '../CoreNode.js';
21
+ import type { INodeAnimatableProps } from '../../main-api/INode.js';
22
+ import { getTimingFunction } from '../utils.js';
23
+ import { mergeColorProgress } from '../../utils.js';
24
+ import { EventEmitter } from '../../common/EventEmitter.js';
25
+
26
+ export interface IAnimationSettings {
27
+ duration: number;
28
+ delay: number;
29
+ easing: string;
30
+ loop: boolean;
31
+ repeat: number;
32
+ repeatDelay: number;
33
+ stopMethod: 'reverse' | 'reset' | false;
34
+ }
35
+
36
+ export class CoreAnimation extends EventEmitter {
37
+ public propStartValues: Partial<INodeAnimatableProps> = {};
38
+ public restoreValues: Partial<INodeAnimatableProps> = {};
39
+ private progress = 0;
40
+ private timingFunction: (t: number) => number | undefined;
41
+
42
+ constructor(
43
+ private node: CoreNode,
44
+ private props: Partial<INodeAnimatableProps>,
45
+ public settings: Partial<IAnimationSettings>,
46
+ ) {
47
+ super();
48
+ this.propStartValues = {};
49
+ (Object.keys(props) as Array<keyof INodeAnimatableProps>).forEach(
50
+ (propName) => {
51
+ this.propStartValues[propName] = node[propName];
52
+ },
53
+ );
54
+
55
+ this.timingFunction = (t: number) => t;
56
+
57
+ if (settings.easing && typeof settings.easing === 'string') {
58
+ this.timingFunction = getTimingFunction(settings.easing);
59
+ }
60
+ }
61
+
62
+ reset() {
63
+ this.progress = 0;
64
+ this.update(0);
65
+ }
66
+
67
+ restore() {
68
+ this.reset();
69
+ (Object.keys(this.props) as Array<keyof INodeAnimatableProps>).forEach(
70
+ (propName) => {
71
+ this.node[propName] = this.propStartValues[propName] as number;
72
+ },
73
+ );
74
+ }
75
+
76
+ reverse() {
77
+ this.progress = 0;
78
+ (Object.keys(this.props) as Array<keyof INodeAnimatableProps>).forEach(
79
+ (propName) => {
80
+ // set the start value to the current value
81
+ const startValue = this.node[propName];
82
+ const endValue = this.propStartValues[propName] as number;
83
+
84
+ // swap the start and end values
85
+ this.props[propName] = endValue;
86
+ this.propStartValues[propName] = startValue;
87
+ },
88
+ );
89
+
90
+ // restore stop method
91
+ this.settings.stopMethod = false;
92
+ }
93
+
94
+ applyEasing(p: number, s: number, e: number): number {
95
+ return (this.timingFunction(p) || p) * (e - s) + s;
96
+ }
97
+
98
+ update(dt: number) {
99
+ // finish if no duration is provided
100
+ const { duration, loop, easing } = this.settings;
101
+ if (!duration) {
102
+ this.emit('finished', {});
103
+ return;
104
+ }
105
+
106
+ this.progress += dt / duration;
107
+
108
+ if (this.progress > 1) {
109
+ this.progress = loop ? 0 : 1;
110
+ this.emit('finished', {});
111
+ }
112
+
113
+ (Object.keys(this.props) as Array<keyof INodeAnimatableProps>).forEach(
114
+ (propName) => {
115
+ const propValue = this.props[propName] as number;
116
+ const startValue = this.propStartValues[propName] as number;
117
+ const endValue = propValue;
118
+
119
+ if (propName.indexOf('color') !== -1) {
120
+ const progressValue = easing
121
+ ? this.timingFunction(this.progress) || this.progress
122
+ : this.progress;
123
+ const colorValue = mergeColorProgress(
124
+ startValue,
125
+ endValue,
126
+ progressValue,
127
+ );
128
+ this.node[propName] = easing
129
+ ? colorValue
130
+ : mergeColorProgress(startValue, endValue, this.progress);
131
+ } else {
132
+ this.node[propName] = easing
133
+ ? this.applyEasing(this.progress, startValue, endValue)
134
+ : startValue + (endValue - startValue) * this.progress;
135
+ }
136
+ },
137
+ );
138
+ }
139
+ }
@@ -0,0 +1,117 @@
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
+ import type {
21
+ AnimationControllerState,
22
+ IAnimationController,
23
+ } from '../../common/IAnimationController.js';
24
+ import type { AnimationManager } from './AnimationManager.js';
25
+ import type { CoreAnimation } from './CoreAnimation.js';
26
+ import { assertTruthy } from '../../utils.js';
27
+
28
+ export class CoreAnimationController implements IAnimationController {
29
+ stoppedPromise: Promise<void> | null = null;
30
+ /**
31
+ * If this is null, then the animation is in a finished / stopped state.
32
+ */
33
+ stoppedResolve: (() => void) | null = null;
34
+
35
+ constructor(
36
+ private manager: AnimationManager,
37
+ private animation: CoreAnimation,
38
+ ) {
39
+ this.state = 'stopped';
40
+ }
41
+
42
+ state: AnimationControllerState;
43
+
44
+ start(): IAnimationController {
45
+ this.makeStoppedPromise();
46
+ this.animation.once('finished', this.finished.bind(this));
47
+
48
+ // prevent registering the same animation twice
49
+ if (!this.manager.activeAnimations.has(this.animation)) {
50
+ this.manager.registerAnimation(this.animation);
51
+ }
52
+
53
+ this.state = 'running';
54
+ return this;
55
+ }
56
+
57
+ stop(): IAnimationController {
58
+ this.manager.unregisterAnimation(this.animation);
59
+ if (this.stoppedResolve !== null) {
60
+ this.stoppedResolve();
61
+ this.stoppedResolve = null;
62
+ }
63
+ this.animation.reset();
64
+ this.state = 'stopped';
65
+ return this;
66
+ }
67
+
68
+ pause(): IAnimationController {
69
+ this.manager.unregisterAnimation(this.animation);
70
+ this.state = 'paused';
71
+ return this;
72
+ }
73
+
74
+ restore(): IAnimationController {
75
+ this.stoppedResolve = null;
76
+ this.animation.restore();
77
+ return this;
78
+ }
79
+
80
+ waitUntilStopped(): Promise<void> {
81
+ this.makeStoppedPromise();
82
+ const promise = this.stoppedPromise;
83
+ assertTruthy(promise);
84
+ return promise;
85
+ }
86
+
87
+ private makeStoppedPromise(): void {
88
+ if (this.stoppedResolve === null) {
89
+ this.stoppedPromise = new Promise((resolve) => {
90
+ this.stoppedResolve = resolve;
91
+ });
92
+ }
93
+ }
94
+
95
+ private finished(): void {
96
+ assertTruthy(this.stoppedResolve);
97
+ // If the animation is looping, then we need to restart it.
98
+ const { loop, stopMethod } = this.animation.settings;
99
+
100
+ if (stopMethod === 'reverse') {
101
+ this.animation.reverse();
102
+ this.start();
103
+ return;
104
+ }
105
+
106
+ // resolve promise
107
+ this.stoppedResolve();
108
+ this.stoppedResolve = null;
109
+
110
+ if (loop) {
111
+ return;
112
+ }
113
+
114
+ // unregister animation
115
+ this.manager.unregisterAnimation(this.animation);
116
+ }
117
+ }
@@ -0,0 +1,231 @@
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
+ export const EPSILON = 0.00001;
21
+ export const RANDOM = Math.random;
22
+ export const ANGLE_ORDER = 'zyx';
23
+
24
+ export type ConversionOrder = 'xyz' | 'xzy' | 'yxz' | 'yzx' | 'zxy' | 'zyx';
25
+
26
+ type RemoveIndex<T> = {
27
+ [K in keyof T as number extends K ? never : K]: T[K];
28
+ };
29
+
30
+ export type Float32ArrayLen2 = RemoveIndex<Float32Array> & {
31
+ 0: number;
32
+ 1: number;
33
+ length: 2;
34
+ };
35
+
36
+ export type NumberArrayLen2 = [number, number];
37
+
38
+ export type Float32ArrayLen3 = RemoveIndex<Float32Array> & {
39
+ 0: number;
40
+ 1: number;
41
+ 2: number;
42
+ length: 3;
43
+ };
44
+
45
+ export type NumberArrayLen3 = [number, number, number];
46
+
47
+ export type Float32ArrayLen4 = RemoveIndex<Float32Array> & {
48
+ 0: number;
49
+ 1: number;
50
+ 2: number;
51
+ 3: number;
52
+ length: 4;
53
+ };
54
+
55
+ export type NumberArrayLen4 = [number, number, number, number];
56
+
57
+ export type Float32ArrayLen6 = RemoveIndex<Float32Array> & {
58
+ 0: number;
59
+ 1: number;
60
+ 2: number;
61
+ 3: number;
62
+ 4: number;
63
+ 5: number;
64
+ length: 6;
65
+ };
66
+
67
+ export type NumberArrayLen6 = [number, number, number, number, number, number];
68
+
69
+ export type Float32ArrayLen8 = RemoveIndex<Float32Array> & {
70
+ 0: number;
71
+ 1: number;
72
+ 2: number;
73
+ 3: number;
74
+ 4: number;
75
+ 5: number;
76
+ 6: number;
77
+ 7: number;
78
+ length: 8;
79
+ };
80
+
81
+ export type NumberArrayLen8 = [
82
+ number,
83
+ number,
84
+ number,
85
+ number,
86
+ number,
87
+ number,
88
+ number,
89
+ number,
90
+ ];
91
+
92
+ export type Float32ArrayLen9 = RemoveIndex<Float32Array> & {
93
+ 0: number;
94
+ 1: number;
95
+ 2: number;
96
+ 3: number;
97
+ 4: number;
98
+ 5: number;
99
+ 6: number;
100
+ 7: number;
101
+ 8: number;
102
+ length: 9;
103
+ };
104
+
105
+ export type NumberArrayLen9 = [
106
+ number,
107
+ number,
108
+ number,
109
+ number,
110
+ number,
111
+ number,
112
+ number,
113
+ number,
114
+ number,
115
+ ];
116
+
117
+ export type Float32ArrayLen16 = RemoveIndex<Float32Array> & {
118
+ 0: number;
119
+ 1: number;
120
+ 2: number;
121
+ 3: number;
122
+ 4: number;
123
+ 5: number;
124
+ 6: number;
125
+ 7: number;
126
+ 8: number;
127
+ 9: number;
128
+ 10: number;
129
+ 11: number;
130
+ 12: number;
131
+ 13: number;
132
+ 14: number;
133
+ 15: number;
134
+ length: 16;
135
+ };
136
+
137
+ export type NumberArrayLen16 = [
138
+ number,
139
+ number,
140
+ number,
141
+ number,
142
+ number,
143
+ number,
144
+ number,
145
+ number,
146
+ number,
147
+ number,
148
+ number,
149
+ number,
150
+ number,
151
+ number,
152
+ number,
153
+ number,
154
+ ];
155
+
156
+ export interface FOV {
157
+ upDegrees: number;
158
+ downDegrees: number;
159
+ leftDegrees: number;
160
+ rightDegrees: number;
161
+ }
162
+
163
+ let useFloat32Arrays = true;
164
+
165
+ /**
166
+ * Sets array type to be used.
167
+ *
168
+ * @param {number} size of matrix type
169
+ * @returns {FloatArray} matrix type
170
+ */
171
+ export function setMatrixArrayType(type: Float32Array | number[]): void {
172
+ useFloat32Arrays = type instanceof Float32Array;
173
+ }
174
+
175
+ /**
176
+ * Return array type to be used.
177
+ *
178
+ * @param {number} size of matrix type
179
+ * @returns {FloatArray} matrix type
180
+ */
181
+ export function getMatrixArrayType(size?: number): Float32Array | number[] {
182
+ if (useFloat32Arrays && typeof Float32Array !== 'undefined') {
183
+ return size ? new Float32Array(size) : new Float32Array();
184
+ }
185
+ return [];
186
+ }
187
+
188
+ /**
189
+ * Convert Angle in Degrees To Radians
190
+ *
191
+ * @param {number} angle is an Angle in Degrees
192
+ */
193
+ export function toRadians(angle: number): number {
194
+ return angle * (Math.PI / 180);
195
+ }
196
+
197
+ /**
198
+ * Convert Angle in Radians To an Angle in Radians
199
+ *
200
+ * @param {number} angle is an Angle in Radians
201
+ */
202
+ export function toDegrees(angle: number): number {
203
+ return angle * (180 / Math.PI);
204
+ }
205
+
206
+ /**
207
+ * Tests whether or not the arguments have approximately the same value, within an absolute
208
+ * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less
209
+ * than or equal to 1.0, and a relative tolerance is used for larger values)
210
+ *
211
+ * @param {number} a The first number to test.
212
+ * @param {number} b The second number to test.
213
+ * @returns {boolean} True if the numbers are approximately equal, false otherwise.
214
+ */
215
+
216
+ export function equals(a: number, b: number): boolean {
217
+ return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));
218
+ }
219
+
220
+ if (!Math.hypot)
221
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
222
+ Math.hypot = function (...args: any[]): number {
223
+ let y = 0,
224
+ i: number = arguments.length;
225
+
226
+ while (i--) {
227
+ y += args[i] * args[i];
228
+ }
229
+
230
+ return Math.sqrt(y);
231
+ };
@@ -0,0 +1,31 @@
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
+ import * as glMatrix from './common.js';
21
+ import * as mat2 from './mat2.js';
22
+ import * as mat2d from './mat2d.js';
23
+ import * as mat3 from './mat3.js';
24
+ import * as mat4 from './mat4.js';
25
+ import * as quat from './quat.js';
26
+ import * as quat2 from './quat2.js';
27
+ import * as vec2 from './vec2.js';
28
+ import * as vec3 from './vec3.js';
29
+ import * as vec4 from './vec4.js';
30
+
31
+ export { glMatrix, mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4 };