@lightningjs/renderer 3.0.0-beta9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +230 -147
  4. package/dist/exports/canvas.d.ts +1 -1
  5. package/dist/exports/canvas.js +1 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +5 -6
  8. package/dist/exports/index.js +3 -5
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/platform.d.ts +7 -0
  11. package/dist/exports/platform.js +27 -0
  12. package/dist/exports/platform.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +2 -1
  14. package/dist/exports/webgl.js +2 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/common/CommonTypes.d.ts +15 -3
  17. package/dist/src/core/Autosizer.d.ts +35 -0
  18. package/dist/src/core/Autosizer.js +196 -0
  19. package/dist/src/core/Autosizer.js.map +1 -0
  20. package/dist/src/core/CoreNode.d.ts +107 -59
  21. package/dist/src/core/CoreNode.js +524 -282
  22. package/dist/src/core/CoreNode.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +73 -88
  24. package/dist/src/core/CoreTextNode.js +383 -236
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +19 -17
  27. package/dist/src/core/CoreTextureManager.js +52 -120
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +63 -9
  30. package/dist/src/core/Stage.js +233 -133
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureError.d.ts +11 -0
  33. package/dist/src/core/TextureError.js +37 -0
  34. package/dist/src/core/TextureError.js.map +1 -0
  35. package/dist/src/core/TextureMemoryManager.d.ts +2 -4
  36. package/dist/src/core/TextureMemoryManager.js +80 -113
  37. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  38. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  39. package/dist/src/core/animations/CoreAnimation.js +3 -3
  40. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  41. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -1
  42. package/dist/src/core/animations/CoreAnimationController.js +4 -2
  43. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  44. package/dist/src/core/lib/ImageWorker.js +1 -1
  45. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  46. package/dist/src/core/lib/WebGlContextWrapper.d.ts +69 -97
  47. package/dist/src/core/lib/WebGlContextWrapper.js +192 -152
  48. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  49. package/dist/src/core/lib/collectionUtils.d.ts +4 -0
  50. package/dist/src/core/lib/collectionUtils.js +72 -0
  51. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  52. package/dist/src/core/lib/colorCache.d.ts +1 -0
  53. package/dist/src/core/lib/colorCache.js +19 -0
  54. package/dist/src/core/lib/colorCache.js.map +1 -0
  55. package/dist/src/core/lib/colorParser.d.ts +21 -0
  56. package/dist/src/core/lib/colorParser.js +72 -0
  57. package/dist/src/core/lib/colorParser.js.map +1 -0
  58. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  59. package/dist/src/core/lib/textureCompression.js +311 -67
  60. package/dist/src/core/lib/textureCompression.js.map +1 -1
  61. package/dist/src/core/lib/utils.d.ts +6 -6
  62. package/dist/src/core/lib/utils.js +21 -65
  63. package/dist/src/core/lib/utils.js.map +1 -1
  64. package/dist/src/core/lib/validateImageBitmap.d.ts +1 -2
  65. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  66. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  67. package/dist/src/core/platform.d.ts +10 -0
  68. package/dist/src/core/platform.js +84 -0
  69. package/dist/src/core/platform.js.map +1 -0
  70. package/dist/src/core/platforms/GlContextWrapper.d.ts +136 -0
  71. package/{src/core/text-rendering/TextRenderingUtils.ts → dist/src/core/platforms/GlContextWrapper.js} +32 -36
  72. package/dist/src/core/platforms/GlContextWrapper.js.map +1 -0
  73. package/dist/src/core/platforms/Platform.d.ts +78 -12
  74. package/dist/src/core/platforms/Platform.js +18 -0
  75. package/dist/src/core/platforms/Platform.js.map +1 -1
  76. package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +776 -0
  77. package/dist/src/core/platforms/web/WebGlContextWrapper.js +1208 -0
  78. package/dist/src/core/platforms/web/WebGlContextWrapper.js.map +1 -0
  79. package/dist/src/core/platforms/web/WebPlatform.d.ts +17 -2
  80. package/dist/src/core/platforms/web/WebPlatform.js +158 -13
  81. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  82. package/dist/src/core/platforms/web/WebPlatformChrome50.d.ts +19 -0
  83. package/dist/src/core/platforms/web/WebPlatformChrome50.js +54 -0
  84. package/dist/src/core/platforms/web/WebPlatformChrome50.js.map +1 -0
  85. package/dist/src/core/platforms/web/WebPlatformLegacy.d.ts +20 -0
  86. package/dist/src/core/platforms/web/WebPlatformLegacy.js +105 -0
  87. package/dist/src/core/platforms/web/WebPlatformLegacy.js.map +1 -0
  88. package/dist/src/core/platforms/web/WebPlatformNext.d.ts +21 -0
  89. package/dist/src/core/platforms/web/WebPlatformNext.js +52 -0
  90. package/dist/src/core/platforms/web/WebPlatformNext.js.map +1 -0
  91. package/dist/src/core/platforms/web/lib/ImageWorker.d.ts +21 -0
  92. package/dist/src/core/platforms/web/lib/ImageWorker.js +136 -0
  93. package/dist/src/core/platforms/web/lib/ImageWorker.js.map +1 -0
  94. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.d.ts +6 -0
  95. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js +92 -0
  96. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js.map +1 -0
  97. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.d.ts +1 -0
  98. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js +63 -0
  99. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js.map +1 -0
  100. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.d.ts +7 -0
  101. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js +75 -0
  102. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js.map +1 -0
  103. package/dist/src/core/platforms/web/lib/createImageBitmap.d.ts +1 -0
  104. package/dist/src/core/platforms/web/lib/createImageBitmap.js +27 -0
  105. package/dist/src/core/platforms/web/lib/createImageBitmap.js.map +1 -0
  106. package/dist/src/core/platforms/web/lib/textureCompression.d.ts +26 -0
  107. package/dist/src/core/platforms/web/lib/textureCompression.js +301 -0
  108. package/dist/src/core/platforms/web/lib/textureCompression.js.map +1 -0
  109. package/dist/src/core/platforms/web/lib/textureSvg.d.ts +7 -0
  110. package/dist/src/core/platforms/web/lib/textureSvg.js +51 -0
  111. package/dist/src/core/platforms/web/lib/textureSvg.js.map +1 -0
  112. package/dist/src/core/platforms/web/lib/utils.d.ts +5 -0
  113. package/dist/src/core/platforms/web/lib/utils.js +86 -0
  114. package/dist/src/core/platforms/web/lib/utils.js.map +1 -0
  115. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  116. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  117. package/dist/src/core/renderers/CoreRenderer.d.ts +4 -40
  118. package/dist/src/core/renderers/CoreRenderer.js +3 -4
  119. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  120. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  121. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts → dist/src/core/renderers/CoreShader.js} +28 -32
  122. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  123. package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
  124. package/dist/src/core/renderers/CoreShaderNode.js +19 -2
  125. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  126. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  127. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  128. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  129. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  130. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  131. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  132. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +5 -6
  133. package/dist/src/core/renderers/canvas/CanvasRenderer.js +67 -91
  134. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  135. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
  136. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +5 -4
  137. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  138. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  139. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  140. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  141. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  142. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  143. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  144. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  145. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  146. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  147. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  148. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts → dist/src/core/renderers/canvas/shaders/UnsupportedShader.js} +43 -40
  149. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  150. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  151. package/dist/src/core/renderers/webgl/SdfRenderOp.js +98 -0
  152. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  153. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  154. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  155. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  156. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  157. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  158. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  159. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
  160. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
  161. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  162. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  163. package/dist/src/core/renderers/webgl/{WebGlRenderOp.js → WebGlCoreRenderOp.js} +43 -47
  164. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  165. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  166. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
  167. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  168. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
  169. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.d.ts +1 -0
  170. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js +2 -0
  171. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js.map +1 -0
  172. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
  173. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  174. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +4 -2
  175. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  176. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  177. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +15 -2
  178. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  179. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  180. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +19 -9
  181. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +101 -49
  182. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  183. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -23
  184. package/dist/src/core/renderers/webgl/WebGlRenderer.js +124 -133
  185. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  186. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +4 -6
  187. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +3 -3
  188. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  189. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +7 -7
  190. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +60 -38
  191. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  192. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -4
  193. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -2
  194. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  195. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -3
  196. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +38 -37
  197. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  198. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  199. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
  200. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  201. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  202. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
  203. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  204. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  205. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
  206. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  207. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  208. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
  209. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  210. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  211. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
  212. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  213. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  214. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  215. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  216. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  217. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  218. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  219. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  220. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  221. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  222. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  223. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  224. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  225. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  226. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  227. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  228. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  229. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  230. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  231. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  232. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  233. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  234. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  235. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  236. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  237. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  238. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  239. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  240. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  241. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  242. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  243. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +34 -0
  244. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +113 -0
  245. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  246. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
  247. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +126 -0
  248. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  249. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  250. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  251. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  252. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  253. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  254. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  255. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  256. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  257. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  258. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  259. package/dist/src/core/shaders/canvas/Border.js +64 -25
  260. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  261. package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
  262. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  263. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
  264. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  265. package/dist/src/core/shaders/canvas/RadialGradient.js +12 -10
  266. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  267. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  268. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  269. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  270. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +41 -11
  271. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  272. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  273. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +46 -9
  274. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  275. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +6 -5
  276. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  277. package/dist/src/core/shaders/canvas/Shadow.js +4 -2
  278. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  279. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  280. package/dist/src/core/shaders/canvas/utils/render.js +31 -18
  281. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  282. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -1
  283. package/dist/src/core/shaders/templates/BorderTemplate.js +30 -10
  284. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  285. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  286. package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -2
  287. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  288. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  289. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  290. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  291. package/dist/src/core/shaders/webgl/Border.js +138 -84
  292. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  293. package/dist/src/core/shaders/webgl/Default.js +46 -47
  294. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  295. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  296. package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
  297. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  298. package/dist/src/core/shaders/webgl/LinearGradient.js +60 -36
  299. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  300. package/dist/src/core/shaders/webgl/RadialGradient.js +60 -37
  301. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  302. package/dist/src/core/shaders/webgl/Rounded.js +74 -72
  303. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  304. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +172 -113
  305. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  306. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +191 -132
  307. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  308. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +57 -55
  309. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  310. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  311. package/dist/src/core/shaders/webgl/SdfShader.js +56 -66
  312. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  313. package/dist/src/core/shaders/webgl/Shadow.js +89 -83
  314. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  315. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  316. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  317. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  318. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  319. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  320. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  321. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  322. package/dist/src/core/text-rendering/SdfFontHandler.js +379 -0
  323. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  324. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  325. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  326. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  327. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  328. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  329. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  330. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  331. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/TextRenderer.js} +20 -38
  332. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  333. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  334. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  335. package/dist/src/core/text-rendering/Utils.js +84 -0
  336. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  337. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  338. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  339. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -5
  340. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  341. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
  342. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
  343. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  344. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  345. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +87 -46
  346. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  347. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  348. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
  349. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  350. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
  351. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
  352. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  353. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  354. package/dist/src/core/textures/ColorTexture.js +3 -4
  355. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  356. package/dist/src/core/textures/ImageTexture.d.ts +33 -14
  357. package/dist/src/core/textures/ImageTexture.js +46 -125
  358. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  359. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  360. package/dist/src/core/textures/NoiseTexture.js +8 -8
  361. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  362. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  363. package/dist/src/core/textures/RenderTexture.js +12 -12
  364. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  365. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  366. package/dist/src/core/textures/SubTexture.js +22 -40
  367. package/dist/src/core/textures/SubTexture.js.map +1 -1
  368. package/dist/src/core/textures/Texture.d.ts +74 -15
  369. package/dist/src/core/textures/Texture.js +131 -19
  370. package/dist/src/core/textures/Texture.js.map +1 -1
  371. package/dist/src/core/utils.d.ts +2 -1
  372. package/dist/src/core/utils.js +1 -1
  373. package/dist/src/core/utils.js.map +1 -1
  374. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  375. package/dist/src/main-api/DynamicShaderController.js +58 -0
  376. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  377. package/dist/src/main-api/Inspector.d.ts +129 -1
  378. package/dist/src/main-api/Inspector.js +462 -23
  379. package/dist/src/main-api/Inspector.js.map +1 -1
  380. package/dist/src/main-api/Renderer.d.ts +223 -41
  381. package/dist/src/main-api/Renderer.js +107 -62
  382. package/dist/src/main-api/Renderer.js.map +1 -1
  383. package/dist/src/main-api/ShaderController.d.ts +31 -0
  384. package/dist/src/main-api/ShaderController.js +37 -0
  385. package/dist/src/main-api/ShaderController.js.map +1 -0
  386. package/dist/src/utils.d.ts +0 -2
  387. package/dist/src/utils.js +0 -36
  388. package/dist/src/utils.js.map +1 -1
  389. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  390. package/exports/canvas-shaders.ts +28 -28
  391. package/exports/canvas.ts +45 -45
  392. package/exports/index.ts +90 -90
  393. package/exports/inspector.ts +24 -24
  394. package/exports/platform.ts +31 -0
  395. package/exports/utils.ts +50 -50
  396. package/exports/webgl-shaders.ts +28 -28
  397. package/exports/webgl.ts +52 -50
  398. package/package.json +16 -15
  399. package/src/common/CommonTypes.ts +163 -146
  400. package/src/common/EventEmitter.ts +77 -77
  401. package/src/common/IAnimationController.ts +92 -92
  402. package/src/common/IEventEmitter.ts +28 -28
  403. package/src/core/Autosizer.ts +224 -0
  404. package/src/core/CoreNode.test.ts +365 -202
  405. package/src/core/CoreNode.ts +2785 -2489
  406. package/src/core/CoreShaderManager.ts +188 -188
  407. package/src/core/CoreTextNode.test.ts +311 -0
  408. package/src/core/CoreTextNode.ts +607 -451
  409. package/src/core/CoreTextureManager.ts +484 -548
  410. package/src/core/Stage.ts +927 -800
  411. package/src/core/TextureError.ts +46 -0
  412. package/src/core/TextureMemoryManager.ts +418 -462
  413. package/src/core/animations/AnimationManager.ts +38 -38
  414. package/src/core/animations/CoreAnimation.ts +290 -291
  415. package/src/core/animations/CoreAnimationController.ts +169 -166
  416. package/src/core/lib/ContextSpy.ts +41 -41
  417. package/src/core/lib/Matrix3d.ts +244 -244
  418. package/src/core/lib/RenderCoords.ts +71 -71
  419. package/src/core/lib/collectionUtils.ts +83 -0
  420. package/src/core/lib/colorCache.ts +20 -0
  421. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
  422. package/src/core/lib/utils.ts +337 -390
  423. package/src/core/platforms/GlContextWrapper.ts +291 -0
  424. package/src/core/platforms/Platform.ts +176 -77
  425. package/src/core/{lib → platforms/web}/WebGlContextWrapper.ts +1547 -1368
  426. package/src/core/platforms/web/WebPlatform.ts +306 -84
  427. package/src/core/platforms/web/WebPlatformChrome50.ts +63 -0
  428. package/src/core/platforms/web/WebPlatformLegacy.ts +150 -0
  429. package/src/core/platforms/web/WebPlatformNext.ts +57 -0
  430. package/src/core/platforms/web/lib/ImageWorker.ts +192 -0
  431. package/src/core/platforms/web/lib/ImageWorkerDefault.ts +117 -0
  432. package/src/core/platforms/web/lib/ImageWorkerLegacy.ts +87 -0
  433. package/src/core/platforms/web/lib/ImageWorkerNoOptions.ts +99 -0
  434. package/src/core/platforms/web/lib/createImageBitmap.ts +40 -0
  435. package/src/core/platforms/web/lib/textureCompression.ts +391 -0
  436. package/src/core/{lib → platforms/web/lib}/textureSvg.ts +66 -78
  437. package/src/core/platforms/web/lib/utils.ts +105 -0
  438. package/src/core/renderers/CoreContextTexture.ts +44 -43
  439. package/src/core/renderers/CoreRenderOp.ts +22 -22
  440. package/src/core/renderers/CoreRenderer.ts +71 -110
  441. package/src/core/renderers/CoreShaderNode.ts +202 -175
  442. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  443. package/src/core/renderers/canvas/CanvasRenderer.ts +258 -302
  444. package/src/core/renderers/canvas/CanvasShaderNode.ts +95 -96
  445. package/src/core/renderers/canvas/CanvasTexture.ts +160 -156
  446. package/src/core/renderers/webgl/SdfRenderOp.ts +106 -0
  447. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +89 -86
  448. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
  449. package/src/core/renderers/webgl/WebGlCtxTexture.test.ts +113 -0
  450. package/src/core/renderers/webgl/WebGlCtxTexture.ts +350 -298
  451. package/src/core/renderers/webgl/WebGlRenderer.ts +727 -747
  452. package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -435
  453. package/src/core/renderers/webgl/WebGlShaderProgram.ts +364 -341
  454. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  455. package/src/core/renderers/webgl/internal/RendererUtils.ts +150 -155
  456. package/src/core/renderers/webgl/internal/ShaderUtils.ts +283 -281
  457. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  458. package/src/core/shaders/canvas/Border.ts +132 -78
  459. package/src/core/shaders/canvas/HolePunch.ts +56 -62
  460. package/src/core/shaders/canvas/LinearGradient.ts +73 -71
  461. package/src/core/shaders/canvas/RadialGradient.ts +96 -99
  462. package/src/core/shaders/canvas/Rounded.ts +55 -55
  463. package/src/core/shaders/canvas/RoundedWithBorder.ts +122 -74
  464. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +136 -90
  465. package/src/core/shaders/canvas/RoundedWithShadow.ts +71 -70
  466. package/src/core/shaders/canvas/Shadow.ts +54 -52
  467. package/src/core/shaders/canvas/utils/render.ts +160 -151
  468. package/src/core/shaders/templates/BorderTemplate.ts +145 -115
  469. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  470. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  471. package/src/core/shaders/templates/RadialGradientTemplate.ts +83 -81
  472. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  473. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  474. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  475. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  476. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  477. package/src/core/shaders/utils.ts +46 -46
  478. package/src/core/shaders/webgl/Border.ts +169 -116
  479. package/src/core/shaders/webgl/Default.ts +88 -89
  480. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  481. package/src/core/shaders/webgl/HolePunch.ts +75 -75
  482. package/src/core/shaders/webgl/LinearGradient.ts +106 -82
  483. package/src/core/shaders/webgl/RadialGradient.ts +108 -85
  484. package/src/core/shaders/webgl/Rounded.ts +115 -117
  485. package/src/core/shaders/webgl/RoundedWithBorder.ts +210 -155
  486. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -175
  487. package/src/core/shaders/webgl/RoundedWithShadow.ts +96 -98
  488. package/src/core/shaders/webgl/SdfShader.ts +122 -134
  489. package/src/core/shaders/webgl/Shadow.ts +121 -115
  490. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  491. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  492. package/src/core/text-rendering/SdfFontHandler.ts +581 -0
  493. package/src/core/text-rendering/SdfTextRenderer.ts +403 -0
  494. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  495. package/src/core/text-rendering/TextRenderer.ts +444 -0
  496. package/src/core/text-rendering/Utils.ts +99 -0
  497. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  498. package/src/core/textures/ColorTexture.ts +104 -102
  499. package/src/core/textures/ImageTexture.ts +292 -418
  500. package/src/core/textures/NoiseTexture.ts +106 -104
  501. package/src/core/textures/RenderTexture.ts +87 -85
  502. package/src/core/textures/SubTexture.ts +184 -205
  503. package/src/core/textures/Texture.ts +524 -381
  504. package/src/core/utils.ts +229 -227
  505. package/src/env.d.ts +7 -7
  506. package/src/main-api/INode.ts +100 -100
  507. package/src/main-api/Inspector.ts +1278 -569
  508. package/src/main-api/Renderer.ts +1030 -818
  509. package/src/main-api/utils.ts +45 -45
  510. package/src/utils.ts +220 -267
  511. package/COPYING +0 -1
  512. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  513. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  514. package/src/core/lib/ImageWorker.ts +0 -286
  515. package/src/core/lib/textureCompression.ts +0 -152
  516. package/src/core/lib/validateImageBitmap.ts +0 -87
  517. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  518. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
  519. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  520. package/src/core/text-rendering/TrFontManager.ts +0 -183
  521. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  522. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  523. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  524. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  525. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  526. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  527. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  528. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -514
  529. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -863
  530. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -793
  531. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  532. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  533. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  534. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  535. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  536. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -497
  537. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  538. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  539. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  540. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  541. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -567
@@ -1,390 +1,337 @@
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 { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
21
-
22
- export const PROTOCOL_REGEX = /^(data|ftps?|https?):/;
23
-
24
- export type RGBA = [r: number, g: number, b: number, a: number];
25
-
26
- export const getNormalizedRgbaComponents = (rgba: number): RGBA => {
27
- const r = rgba >>> 24;
28
- const g = (rgba >>> 16) & 0xff;
29
- const b = (rgba >>> 8) & 0xff;
30
- const a = rgba & 0xff;
31
- return [r / 255, g / 255, b / 255, a / 255];
32
- };
33
-
34
- export const getRgbaComponents = (rgba: number): RGBA => {
35
- const r = rgba >>> 24;
36
- const g = (rgba >>> 16) & 0xff;
37
- const b = (rgba >>> 8) & 0xff;
38
- const a = rgba & 0xff;
39
- return [r, g, b, a];
40
- };
41
-
42
- export const norm = (rgba: number): number => {
43
- const r = rgba >>> 24;
44
- const g = (rgba >>> 16) & 0xff;
45
- const b = (rgba >>> 8) & 0xff;
46
- const a = rgba & 0xff;
47
- const rgbaArr: RGBA = [r / 255, g / 255, b / 255, a / 255];
48
-
49
- rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));
50
- rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));
51
- rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));
52
- rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));
53
- let v =
54
- ((rgbaArr[3] | 0) << 24) +
55
- ((rgbaArr[0] | 0) << 16) +
56
- ((rgbaArr[1] | 0) << 8) +
57
- (rgbaArr[2] | 0);
58
- if (v < 0) {
59
- v = 0xffffffff + v + 1;
60
- }
61
- return v;
62
- };
63
-
64
- export function getNormalizedAlphaComponent(rgba: number): number {
65
- return (rgba & 0xff) / 255.0;
66
- }
67
-
68
- /**
69
- * Get a CSS color string from a RGBA color
70
- *
71
- * @param color
72
- * @returns
73
- */
74
- export function getRgbaString(color: RGBA) {
75
- const r = Math.floor(color[0] * 255.0);
76
- const g = Math.floor(color[1] * 255.0);
77
- const b = Math.floor(color[2] * 255.0);
78
- const a = Math.floor(color[3] * 255.0);
79
- return `rgba(${r},${g},${b},${a.toFixed(4)})`;
80
- }
81
-
82
- export interface Rect {
83
- x: number;
84
- y: number;
85
- width: number;
86
- height: number;
87
- }
88
-
89
- export interface RectWithValid extends Rect {
90
- valid: boolean;
91
- }
92
-
93
- export interface Bound {
94
- x1: number;
95
- y1: number;
96
- x2: number;
97
- y2: number;
98
- }
99
-
100
- export interface BoundWithValid extends Bound {
101
- valid: boolean;
102
- }
103
-
104
- export function createBound<T extends Bound = Bound>(
105
- x1: number,
106
- y1: number,
107
- x2: number,
108
- y2: number,
109
- out?: T,
110
- ): T {
111
- if (out) {
112
- out.x1 = x1;
113
- out.y1 = y1;
114
- out.x2 = x2;
115
- out.y2 = y2;
116
- return out;
117
- }
118
- return {
119
- x1,
120
- y1,
121
- x2,
122
- y2,
123
- } as T;
124
- }
125
-
126
- export function intersectBound<T extends Bound = Bound>(
127
- a: Bound,
128
- b: Bound,
129
- out?: T,
130
- ): T {
131
- const intersection = createBound(
132
- Math.max(a.x1, b.x1),
133
- Math.max(a.y1, b.y1),
134
- Math.min(a.x2, b.x2),
135
- Math.min(a.y2, b.y2),
136
- out,
137
- );
138
- if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {
139
- return intersection;
140
- }
141
- return createBound(0, 0, 0, 0, intersection);
142
- }
143
-
144
- export function boundsOverlap(a: Bound, b: Bound): boolean {
145
- return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;
146
- }
147
-
148
- export function convertBoundToRect(bound: Bound): Rect;
149
- export function convertBoundToRect<T extends Rect = Rect>(
150
- bound: Bound,
151
- out: T,
152
- ): T;
153
- export function convertBoundToRect(bound: Bound, out?: Rect): Rect {
154
- if (out) {
155
- out.x = bound.x1;
156
- out.y = bound.y1;
157
- out.width = bound.x2 - bound.x1;
158
- out.height = bound.y2 - bound.y1;
159
- return out;
160
- }
161
- return {
162
- x: bound.x1,
163
- y: bound.y1,
164
- width: bound.x2 - bound.x1,
165
- height: bound.y2 - bound.y1,
166
- };
167
- }
168
-
169
- export function intersectRect(a: Rect, b: Rect): Rect;
170
- export function intersectRect<T extends Rect = Rect>(
171
- a: Rect,
172
- b: Rect,
173
- out: T,
174
- ): T;
175
- export function intersectRect(a: Rect, b: Rect, out?: Rect): Rect {
176
- const x = Math.max(a.x, b.x);
177
- const y = Math.max(a.y, b.y);
178
- const width = Math.min(a.x + a.width, b.x + b.width) - x;
179
- const height = Math.min(a.y + a.height, b.y + b.height) - y;
180
- if (width > 0 && height > 0) {
181
- if (out) {
182
- out.x = x;
183
- out.y = y;
184
- out.width = width;
185
- out.height = height;
186
- return out;
187
- }
188
- return {
189
- x,
190
- y,
191
- width,
192
- height,
193
- };
194
- }
195
- if (out) {
196
- out.x = 0;
197
- out.y = 0;
198
- out.width = 0;
199
- out.height = 0;
200
- return out;
201
- }
202
- return {
203
- x: 0,
204
- y: 0,
205
- width: 0,
206
- height: 0,
207
- };
208
- }
209
-
210
- export function copyRect(a: Rect): Rect;
211
- export function copyRect<T extends Rect = Rect>(a: Rect, out: T): T;
212
- export function copyRect(a: Rect, out?: Rect): Rect {
213
- if (out) {
214
- out.x = a.x;
215
- out.y = a.y;
216
- out.width = a.width;
217
- out.height = a.height;
218
- return out;
219
- }
220
- return {
221
- x: a.x,
222
- y: a.y,
223
- width: a.width,
224
- height: a.height,
225
- };
226
- }
227
-
228
- export function compareRect(a: Rect | null, b: Rect | null): boolean {
229
- if (a === b) {
230
- return true;
231
- }
232
- if (a === null || b === null) {
233
- return false;
234
- }
235
- return (
236
- a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height
237
- );
238
- }
239
-
240
- export function boundInsideBound(bound1: Bound, bound2: Bound) {
241
- return (
242
- bound1.x1 <= bound2.x2 &&
243
- bound1.y1 <= bound2.y2 &&
244
- bound1.x2 >= bound2.x1 &&
245
- bound1.y2 >= bound2.y1
246
- );
247
- }
248
-
249
- export function boundLargeThanBound(bound1: Bound, bound2: Bound) {
250
- return (
251
- bound1.x1 < bound2.x1 &&
252
- bound1.x2 > bound2.x2 &&
253
- bound1.y1 < bound2.y1 &&
254
- bound1.y2 > bound2.y2
255
- );
256
- }
257
-
258
- export function pointInBound(x: number, y: number, bound: Bound) {
259
- return !(x < bound.x1 || x > bound.x2 || y < bound.y1 || y > bound.y2);
260
- }
261
-
262
- export function isBoundPositive(bound: Bound): boolean {
263
- return bound.x1 < bound.x2 && bound.y1 < bound.y2;
264
- }
265
-
266
- export function isRectPositive(rect: Rect): boolean {
267
- return rect.width > 0 && rect.height > 0;
268
- }
269
-
270
- /**
271
- * Create a preload bounds from a strict bound
272
- *
273
- * @param strictBound The strict boundary of the node
274
- * @param boundsMargin Boundary margin to apply to the strictBound
275
- * @returns
276
- */
277
- export function createPreloadBounds(
278
- strictBound: Bound,
279
- boundsMargin: [number, number, number, number],
280
- ): Bound {
281
- return createBound(
282
- strictBound.x1 - boundsMargin[3],
283
- strictBound.y1 - boundsMargin[0],
284
- strictBound.x2 + boundsMargin[1],
285
- strictBound.y2 + boundsMargin[2],
286
- );
287
- }
288
-
289
- export function convertUrlToAbsolute(url: string): string {
290
- // handle local file imports if the url isn't remote resource or data blob
291
- if (self.location.protocol === 'file:' && !PROTOCOL_REGEX.test(url)) {
292
- const path = self.location.pathname.split('/');
293
- path.pop();
294
- const basePath = path.join('/');
295
- const baseUrl = self.location.protocol + '//' + basePath;
296
-
297
- // check if url has a leading dot
298
- if (url.charAt(0) === '.') {
299
- url = url.slice(1);
300
- }
301
-
302
- // check if url has a leading slash
303
- if (url.charAt(0) === '/') {
304
- url = url.slice(1);
305
- }
306
-
307
- return baseUrl + '/' + url;
308
- }
309
-
310
- const absoluteUrl = new URL(url, self.location.href);
311
- return absoluteUrl.href;
312
- }
313
-
314
- export function isBase64Image(src: string) {
315
- return src.startsWith('data:') === true;
316
- }
317
-
318
- export function calcFactoredRadius(
319
- radius: number,
320
- width: number,
321
- height: number,
322
- ): number {
323
- return radius * Math.min(Math.min(width, height) / (2.0 * radius), 1);
324
- }
325
-
326
- export function valuesAreEqual(values: number[]) {
327
- let prevValue = values[0];
328
- for (let i = 1; i < values.length; i++) {
329
- if (prevValue !== values[i]) {
330
- return false;
331
- }
332
- }
333
- return true;
334
- }
335
-
336
- export function calcFactoredRadiusArray(
337
- radius: Vec4,
338
- width: number,
339
- height: number,
340
- ): [number, number, number, number] {
341
- const result: [number, number, number, number] = [
342
- radius[0],
343
- radius[1],
344
- radius[2],
345
- radius[3],
346
- ];
347
- const factor = Math.min(
348
- Math.min(
349
- Math.min(
350
- width / Math.max(width, radius[0] + radius[1]),
351
- width / Math.max(width, radius[2] + radius[3]),
352
- ),
353
- Math.min(
354
- height / Math.max(height, radius[0] + radius[3]),
355
- height / Math.max(height, radius[1] + radius[2]),
356
- ),
357
- ),
358
- 1,
359
- );
360
- result[0] *= factor;
361
- result[1] *= factor;
362
- result[2] *= factor;
363
- result[3] *= factor;
364
- return result;
365
- }
366
-
367
- export function dataURIToBlob(dataURI: string): Blob {
368
- dataURI = dataURI.replace(/^data:/, '');
369
-
370
- const type = dataURI.match(/image\/[^;]+/)?.[0] || '';
371
- const base64 = dataURI.replace(/^[^,]+,/, '');
372
-
373
- const sliceSize = 1024;
374
- const byteCharacters = atob(base64);
375
- const bytesLength = byteCharacters.length;
376
- const slicesCount = Math.ceil(bytesLength / sliceSize);
377
- const byteArrays = new Array(slicesCount);
378
-
379
- for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
380
- const begin = sliceIndex * sliceSize;
381
- const end = Math.min(begin + sliceSize, bytesLength);
382
-
383
- const bytes = new Array(end - begin);
384
- for (let offset = begin, i = 0; offset < end; ++i, ++offset) {
385
- bytes[i] = byteCharacters[offset]?.charCodeAt(0);
386
- }
387
- byteArrays[sliceIndex] = new Uint8Array(bytes);
388
- }
389
- return new Blob(byteArrays, { type });
390
- }
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 { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
21
+
22
+ export type RGBA = [r: number, g: number, b: number, a: number];
23
+
24
+ export const getNormalizedRgbaComponents = (rgba: number): RGBA => {
25
+ const r = rgba >>> 24;
26
+ const g = (rgba >>> 16) & 0xff;
27
+ const b = (rgba >>> 8) & 0xff;
28
+ const a = rgba & 0xff;
29
+ return [r / 255, g / 255, b / 255, a / 255];
30
+ };
31
+
32
+ export const getRgbaComponents = (rgba: number): RGBA => {
33
+ const r = rgba >>> 24;
34
+ const g = (rgba >>> 16) & 0xff;
35
+ const b = (rgba >>> 8) & 0xff;
36
+ const a = rgba & 0xff;
37
+ return [r, g, b, a];
38
+ };
39
+
40
+ export const norm = (rgba: number): number => {
41
+ const r = rgba >>> 24;
42
+ const g = (rgba >>> 16) & 0xff;
43
+ const b = (rgba >>> 8) & 0xff;
44
+ const a = rgba & 0xff;
45
+ const rgbaArr: RGBA = [r / 255, g / 255, b / 255, a / 255];
46
+
47
+ rgbaArr[0] = Math.max(0, Math.min(255, rgbaArr[0]));
48
+ rgbaArr[1] = Math.max(0, Math.min(255, rgbaArr[1]));
49
+ rgbaArr[2] = Math.max(0, Math.min(255, rgbaArr[2]));
50
+ rgbaArr[3] = Math.max(0, Math.min(255, rgbaArr[3]));
51
+ let v =
52
+ ((rgbaArr[3] | 0) << 24) +
53
+ ((rgbaArr[0] | 0) << 16) +
54
+ ((rgbaArr[1] | 0) << 8) +
55
+ (rgbaArr[2] | 0);
56
+ if (v < 0) {
57
+ v = 0xffffffff + v + 1;
58
+ }
59
+ return v;
60
+ };
61
+
62
+ export function getNormalizedAlphaComponent(rgba: number): number {
63
+ return (rgba & 0xff) / 255.0;
64
+ }
65
+
66
+ /**
67
+ * Get a CSS color string from a RGBA color
68
+ *
69
+ * @param color
70
+ * @returns
71
+ */
72
+ export function getRgbaString(color: RGBA) {
73
+ const r = Math.floor(color[0] * 255.0);
74
+ const g = Math.floor(color[1] * 255.0);
75
+ const b = Math.floor(color[2] * 255.0);
76
+ const a = Math.floor(color[3] * 255.0);
77
+ return `rgba(${r},${g},${b},${a.toFixed(4)})`;
78
+ }
79
+
80
+ export interface Rect {
81
+ x: number;
82
+ y: number;
83
+ w: number;
84
+ h: number;
85
+ }
86
+
87
+ export interface RectWithValid extends Rect {
88
+ valid: boolean;
89
+ }
90
+
91
+ export interface Bound {
92
+ x1: number;
93
+ y1: number;
94
+ x2: number;
95
+ y2: number;
96
+ }
97
+
98
+ export interface Coord {
99
+ x: number;
100
+ y: number;
101
+ }
102
+
103
+ export interface BoundWithValid extends Bound {
104
+ valid: boolean;
105
+ }
106
+
107
+ export function createBound<T extends Bound = Bound>(
108
+ x1: number,
109
+ y1: number,
110
+ x2: number,
111
+ y2: number,
112
+ out?: T,
113
+ ): T {
114
+ if (out) {
115
+ out.x1 = x1;
116
+ out.y1 = y1;
117
+ out.x2 = x2;
118
+ out.y2 = y2;
119
+ return out;
120
+ }
121
+ return {
122
+ x1,
123
+ y1,
124
+ x2,
125
+ y2,
126
+ } as T;
127
+ }
128
+
129
+ export function intersectBound<T extends Bound = Bound>(
130
+ a: Bound,
131
+ b: Bound,
132
+ out?: T,
133
+ ): T {
134
+ const intersection = createBound(
135
+ Math.max(a.x1, b.x1),
136
+ Math.max(a.y1, b.y1),
137
+ Math.min(a.x2, b.x2),
138
+ Math.min(a.y2, b.y2),
139
+ out,
140
+ );
141
+ if (intersection.x1 < intersection.x2 && intersection.y1 < intersection.y2) {
142
+ return intersection;
143
+ }
144
+ return createBound(0, 0, 0, 0, intersection);
145
+ }
146
+
147
+ export function boundsOverlap(a: Bound, b: Bound): boolean {
148
+ return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1;
149
+ }
150
+
151
+ export function convertBoundToRect(bound: Bound): Rect;
152
+ export function convertBoundToRect<T extends Rect = Rect>(
153
+ bound: Bound,
154
+ out: T,
155
+ ): T;
156
+ export function convertBoundToRect(bound: Bound, out?: Rect): Rect {
157
+ if (out) {
158
+ out.x = bound.x1;
159
+ out.y = bound.y1;
160
+ out.w = bound.x2 - bound.x1;
161
+ out.h = bound.y2 - bound.y1;
162
+ return out;
163
+ }
164
+ return {
165
+ x: bound.x1,
166
+ y: bound.y1,
167
+ w: bound.x2 - bound.x1,
168
+ h: bound.y2 - bound.y1,
169
+ };
170
+ }
171
+
172
+ export function intersectRect(a: Rect, b: Rect): Rect;
173
+ export function intersectRect<T extends Rect = Rect>(
174
+ a: Rect,
175
+ b: Rect,
176
+ out: T,
177
+ ): T;
178
+ export function intersectRect(a: Rect, b: Rect, out?: Rect): Rect {
179
+ const x = Math.max(a.x, b.x);
180
+ const y = Math.max(a.y, b.y);
181
+ const w = Math.min(a.x + a.w, b.x + b.w) - x;
182
+ const h = Math.min(a.y + a.h, b.y + b.h) - y;
183
+ if (w > 0 && h > 0) {
184
+ if (out) {
185
+ out.x = x;
186
+ out.y = y;
187
+ out.w = w;
188
+ out.h = h;
189
+ return out;
190
+ }
191
+ return {
192
+ x,
193
+ y,
194
+ w,
195
+ h,
196
+ };
197
+ }
198
+ if (out) {
199
+ out.x = 0;
200
+ out.y = 0;
201
+ out.w = 0;
202
+ out.h = 0;
203
+ return out;
204
+ }
205
+ return {
206
+ x: 0,
207
+ y: 0,
208
+ w: 0,
209
+ h: 0,
210
+ };
211
+ }
212
+
213
+ export function copyRect(a: Rect): Rect;
214
+ export function copyRect<T extends Rect = Rect>(a: Rect, out: T): T;
215
+ export function copyRect(a: Rect, out?: Rect): Rect {
216
+ if (out) {
217
+ out.x = a.x;
218
+ out.y = a.y;
219
+ out.w = a.w;
220
+ out.h = a.h;
221
+ return out;
222
+ }
223
+ return {
224
+ x: a.x,
225
+ y: a.y,
226
+ w: a.w,
227
+ h: a.h,
228
+ };
229
+ }
230
+
231
+ export function compareRect(a: Rect | null, b: Rect | null): boolean {
232
+ if (a === b) {
233
+ return true;
234
+ }
235
+ if (a === null || b === null) {
236
+ return false;
237
+ }
238
+ return a.x === b.x && a.y === b.y && a.w === b.w && a.h === b.h;
239
+ }
240
+
241
+ export function boundInsideBound(bound1: Bound, bound2: Bound) {
242
+ return (
243
+ bound1.x1 <= bound2.x2 &&
244
+ bound1.y1 <= bound2.y2 &&
245
+ bound1.x2 >= bound2.x1 &&
246
+ bound1.y2 >= bound2.y1
247
+ );
248
+ }
249
+
250
+ export function boundLargeThanBound(bound1: Bound, bound2: Bound) {
251
+ return (
252
+ bound1.x1 < bound2.x1 &&
253
+ bound1.x2 > bound2.x2 &&
254
+ bound1.y1 < bound2.y1 &&
255
+ bound1.y2 > bound2.y2
256
+ );
257
+ }
258
+
259
+ export function pointInBound(x: number, y: number, bound: Bound) {
260
+ return !(x < bound.x1 || x > bound.x2 || y < bound.y1 || y > bound.y2);
261
+ }
262
+
263
+ export function isBoundPositive(bound: Bound): boolean {
264
+ return bound.x1 < bound.x2 && bound.y1 < bound.y2;
265
+ }
266
+
267
+ export function isRectPositive(rect: Rect): boolean {
268
+ return rect.w > 0 && rect.h > 0;
269
+ }
270
+
271
+ /**
272
+ * Create a preload bounds from a strict bound
273
+ *
274
+ * @param strictBound The strict boundary of the node
275
+ * @param boundsMargin Boundary margin to apply to the strictBound
276
+ * @returns
277
+ */
278
+ export function createPreloadBounds(
279
+ strictBound: Bound,
280
+ boundsMargin: [number, number, number, number],
281
+ ): Bound {
282
+ return createBound(
283
+ strictBound.x1 - boundsMargin[3],
284
+ strictBound.y1 - boundsMargin[0],
285
+ strictBound.x2 + boundsMargin[1],
286
+ strictBound.y2 + boundsMargin[2],
287
+ );
288
+ }
289
+
290
+ export function calcFactoredRadius(
291
+ radius: number,
292
+ width: number,
293
+ height: number,
294
+ ): number {
295
+ return radius * Math.min(Math.min(width, height) / (2.0 * radius), 1);
296
+ }
297
+
298
+ export function valuesAreEqual(values: number[]) {
299
+ let prevValue = values[0];
300
+ for (let i = 1; i < values.length; i++) {
301
+ if (prevValue !== values[i]) {
302
+ return false;
303
+ }
304
+ }
305
+ return true;
306
+ }
307
+
308
+ export function calcFactoredRadiusArray(
309
+ radius: Vec4,
310
+ width: number,
311
+ height: number,
312
+ ): [number, number, number, number] {
313
+ const result: [number, number, number, number] = [
314
+ radius[0],
315
+ radius[1],
316
+ radius[2],
317
+ radius[3],
318
+ ];
319
+ const factor = Math.min(
320
+ Math.min(
321
+ Math.min(
322
+ width / Math.max(width, radius[0] + radius[1]),
323
+ width / Math.max(width, radius[2] + radius[3]),
324
+ ),
325
+ Math.min(
326
+ height / Math.max(height, radius[0] + radius[3]),
327
+ height / Math.max(height, radius[1] + radius[2]),
328
+ ),
329
+ ),
330
+ 1,
331
+ );
332
+ result[0] *= factor;
333
+ result[1] *= factor;
334
+ result[2] *= factor;
335
+ result[3] *= factor;
336
+ return result;
337
+ }