@lightningjs/renderer 3.0.0-beta9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) 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/AutosizeManager.d.ts +29 -0
  18. package/dist/src/core/AutosizeManager.js +169 -0
  19. package/dist/src/core/AutosizeManager.js.map +1 -0
  20. package/dist/src/core/Autosizer.d.ts +35 -0
  21. package/dist/src/core/Autosizer.js +196 -0
  22. package/dist/src/core/Autosizer.js.map +1 -0
  23. package/dist/src/core/CoreNode.d.ts +106 -58
  24. package/dist/src/core/CoreNode.js +524 -282
  25. package/dist/src/core/CoreNode.js.map +1 -1
  26. package/dist/src/core/CoreTextNode.d.ts +73 -88
  27. package/dist/src/core/CoreTextNode.js +375 -236
  28. package/dist/src/core/CoreTextNode.js.map +1 -1
  29. package/dist/src/core/CoreTextureManager.d.ts +19 -17
  30. package/dist/src/core/CoreTextureManager.js +52 -120
  31. package/dist/src/core/CoreTextureManager.js.map +1 -1
  32. package/dist/src/core/Stage.d.ts +63 -9
  33. package/dist/src/core/Stage.js +233 -133
  34. package/dist/src/core/Stage.js.map +1 -1
  35. package/dist/src/core/TextureError.d.ts +11 -0
  36. package/dist/src/core/TextureError.js +37 -0
  37. package/dist/src/core/TextureError.js.map +1 -0
  38. package/dist/src/core/TextureMemoryManager.d.ts +2 -4
  39. package/dist/src/core/TextureMemoryManager.js +80 -113
  40. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  41. package/dist/src/core/animations/Animation.d.ts +21 -0
  42. package/dist/src/core/animations/Animation.js +194 -0
  43. package/dist/src/core/animations/Animation.js.map +1 -0
  44. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  45. package/dist/src/core/animations/CoreAnimation.js +3 -3
  46. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  47. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -1
  48. package/dist/src/core/animations/CoreAnimationController.js +4 -2
  49. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  50. package/dist/src/core/animations/Playback.d.ts +64 -0
  51. package/dist/src/core/animations/Playback.js +169 -0
  52. package/dist/src/core/animations/Playback.js.map +1 -0
  53. package/dist/src/core/animations/Transition.d.ts +27 -0
  54. package/dist/src/core/animations/Transition.js +52 -0
  55. package/dist/src/core/animations/Transition.js.map +1 -0
  56. package/dist/src/core/animations/utils.d.ts +2 -0
  57. package/dist/src/core/animations/utils.js +136 -0
  58. package/dist/src/core/animations/utils.js.map +1 -0
  59. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  60. package/dist/src/core/lib/ImageWorker.js +30 -11
  61. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  62. package/dist/src/core/lib/WebGlContextWrapper.d.ts +22 -1
  63. package/dist/src/core/lib/WebGlContextWrapper.js +49 -3
  64. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  65. package/dist/src/core/lib/collectionUtils.d.ts +4 -0
  66. package/dist/src/core/lib/collectionUtils.js +72 -0
  67. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  68. package/dist/src/core/lib/colorCache.d.ts +1 -0
  69. package/dist/src/core/lib/colorCache.js +19 -0
  70. package/dist/src/core/lib/colorCache.js.map +1 -0
  71. package/dist/src/core/lib/colorParser.d.ts +21 -0
  72. package/dist/src/core/lib/colorParser.js +72 -0
  73. package/dist/src/core/lib/colorParser.js.map +1 -0
  74. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  75. package/dist/src/core/lib/textureCompression.js +320 -67
  76. package/dist/src/core/lib/textureCompression.js.map +1 -1
  77. package/dist/src/core/lib/utils.d.ts +6 -6
  78. package/dist/src/core/lib/utils.js +21 -65
  79. package/dist/src/core/lib/utils.js.map +1 -1
  80. package/dist/src/core/platform.d.ts +10 -0
  81. package/dist/src/core/platform.js +81 -0
  82. package/dist/src/core/platform.js.map +1 -0
  83. package/dist/src/core/platforms/GlContextWrapper.d.ts +136 -0
  84. package/{src/core/text-rendering/TextRenderingUtils.ts → dist/src/core/platforms/GlContextWrapper.js} +32 -36
  85. package/dist/src/core/platforms/GlContextWrapper.js.map +1 -0
  86. package/dist/src/core/platforms/Platform.d.ts +78 -12
  87. package/dist/src/core/platforms/Platform.js +18 -0
  88. package/dist/src/core/platforms/Platform.js.map +1 -1
  89. package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +776 -0
  90. package/dist/src/core/platforms/web/WebGlContextWrapper.js +1208 -0
  91. package/dist/src/core/platforms/web/WebGlContextWrapper.js.map +1 -0
  92. package/dist/src/core/platforms/web/WebPlatform.d.ts +17 -2
  93. package/dist/src/core/platforms/web/WebPlatform.js +158 -13
  94. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  95. package/dist/src/core/platforms/web/WebPlatformChrome50.d.ts +19 -0
  96. package/dist/src/core/platforms/web/WebPlatformChrome50.js +54 -0
  97. package/dist/src/core/platforms/web/WebPlatformChrome50.js.map +1 -0
  98. package/dist/src/core/platforms/web/WebPlatformLegacy.d.ts +20 -0
  99. package/dist/src/core/platforms/web/WebPlatformLegacy.js +105 -0
  100. package/dist/src/core/platforms/web/WebPlatformLegacy.js.map +1 -0
  101. package/dist/src/core/platforms/web/WebPlatformNext.d.ts +21 -0
  102. package/dist/src/core/platforms/web/WebPlatformNext.js +52 -0
  103. package/dist/src/core/platforms/web/WebPlatformNext.js.map +1 -0
  104. package/dist/src/core/platforms/web/lib/ImageWorker.d.ts +21 -0
  105. package/dist/src/core/platforms/web/lib/ImageWorker.js +136 -0
  106. package/dist/src/core/platforms/web/lib/ImageWorker.js.map +1 -0
  107. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.d.ts +6 -0
  108. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js +92 -0
  109. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js.map +1 -0
  110. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.d.ts +1 -0
  111. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js +63 -0
  112. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js.map +1 -0
  113. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.d.ts +7 -0
  114. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js +75 -0
  115. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js.map +1 -0
  116. package/dist/src/core/platforms/web/lib/createImageBitmap.d.ts +1 -0
  117. package/dist/src/core/platforms/web/lib/createImageBitmap.js +27 -0
  118. package/dist/src/core/platforms/web/lib/createImageBitmap.js.map +1 -0
  119. package/dist/src/core/platforms/web/lib/textureCompression.d.ts +26 -0
  120. package/dist/src/core/platforms/web/lib/textureCompression.js +301 -0
  121. package/dist/src/core/platforms/web/lib/textureCompression.js.map +1 -0
  122. package/dist/src/core/platforms/web/lib/textureSvg.d.ts +7 -0
  123. package/dist/src/core/platforms/web/lib/textureSvg.js +51 -0
  124. package/dist/src/core/platforms/web/lib/textureSvg.js.map +1 -0
  125. package/dist/src/core/platforms/web/lib/utils.d.ts +5 -0
  126. package/dist/src/core/platforms/web/lib/utils.js +86 -0
  127. package/dist/src/core/platforms/web/lib/utils.js.map +1 -0
  128. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  129. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  130. package/dist/src/core/renderers/CoreRenderer.d.ts +4 -40
  131. package/dist/src/core/renderers/CoreRenderer.js +3 -4
  132. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  133. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  134. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts → dist/src/core/renderers/CoreShader.js} +28 -32
  135. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  136. package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
  137. package/dist/src/core/renderers/CoreShaderNode.js +19 -2
  138. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  139. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  140. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  141. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  142. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  143. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  144. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  145. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +5 -6
  146. package/dist/src/core/renderers/canvas/CanvasRenderer.js +67 -91
  147. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  148. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
  149. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +5 -4
  150. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  151. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  152. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  153. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  154. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  155. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  156. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  157. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  158. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  159. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  160. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  161. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts → dist/src/core/renderers/canvas/shaders/UnsupportedShader.js} +43 -40
  162. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  163. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  164. package/dist/src/core/renderers/webgl/SdfRenderOp.js +98 -0
  165. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  166. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  167. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  168. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  169. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  170. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  171. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  172. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
  173. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
  174. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  175. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  176. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
  177. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  178. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  179. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
  180. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  181. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
  182. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
  183. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  184. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +4 -2
  185. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  186. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  187. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +15 -2
  188. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  189. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  190. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +19 -9
  191. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +101 -49
  192. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  193. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
  194. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
  195. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  196. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -23
  197. package/dist/src/core/renderers/webgl/WebGlRenderer.js +122 -133
  198. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  199. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +4 -6
  200. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +3 -3
  201. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  202. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +7 -7
  203. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +56 -37
  204. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  205. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -4
  206. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  207. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -3
  208. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +38 -37
  209. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  210. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  211. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
  212. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  213. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  214. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
  215. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  216. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  217. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
  218. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  219. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  220. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
  221. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  222. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  223. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
  224. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  225. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  226. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  227. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  228. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  229. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  230. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  231. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  232. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  233. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  234. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  235. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  236. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  237. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  238. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  239. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  240. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  241. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  242. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  243. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  244. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  245. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  246. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  247. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  248. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  249. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  250. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  251. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  252. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  253. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  254. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  255. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
  256. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +134 -0
  257. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  258. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
  259. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -0
  260. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  261. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  262. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  263. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  264. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  265. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  266. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  267. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  268. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  269. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  270. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  271. package/dist/src/core/shaders/canvas/Border.js +64 -25
  272. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  273. package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
  274. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  275. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
  276. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  277. package/dist/src/core/shaders/canvas/RadialGradient.js +12 -10
  278. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  279. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  280. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  281. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  282. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +41 -11
  283. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  284. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  285. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +46 -9
  286. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  287. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +6 -5
  288. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  289. package/dist/src/core/shaders/canvas/Shadow.js +4 -2
  290. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  291. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  292. package/dist/src/core/shaders/canvas/utils/render.js +31 -18
  293. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  294. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -1
  295. package/dist/src/core/shaders/templates/BorderTemplate.js +30 -10
  296. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  297. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  298. package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -2
  299. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  300. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  301. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  302. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  303. package/dist/src/core/shaders/webgl/Border.js +138 -84
  304. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  305. package/dist/src/core/shaders/webgl/Default.js +46 -47
  306. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  307. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  308. package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
  309. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  310. package/dist/src/core/shaders/webgl/LinearGradient.js +60 -36
  311. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  312. package/dist/src/core/shaders/webgl/RadialGradient.js +60 -37
  313. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  314. package/dist/src/core/shaders/webgl/Rounded.js +74 -72
  315. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  316. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +172 -113
  317. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  318. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +191 -132
  319. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  320. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +57 -55
  321. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  322. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  323. package/dist/src/core/shaders/webgl/SdfShader.js +56 -66
  324. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  325. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
  326. package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
  327. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
  328. package/dist/src/core/shaders/webgl/Shadow.js +89 -83
  329. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  330. package/dist/src/core/text-rendering/CanvasFont.d.ts +14 -0
  331. package/dist/src/core/text-rendering/CanvasFont.js +111 -0
  332. package/dist/src/core/text-rendering/CanvasFont.js.map +1 -0
  333. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  334. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  335. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  336. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  337. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  338. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  339. package/dist/src/core/text-rendering/CoreFont.d.ts +33 -0
  340. package/dist/src/core/text-rendering/CoreFont.js +48 -0
  341. package/dist/src/core/text-rendering/CoreFont.js.map +1 -0
  342. package/dist/src/core/text-rendering/FontManager.d.ts +11 -0
  343. package/dist/src/core/text-rendering/FontManager.js +42 -0
  344. package/dist/src/core/text-rendering/FontManager.js.map +1 -0
  345. package/dist/src/core/text-rendering/SdfFont.d.ts +29 -0
  346. package/dist/src/core/text-rendering/SdfFont.js +142 -0
  347. package/dist/src/core/text-rendering/SdfFont.js.map +1 -0
  348. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  349. package/dist/src/core/text-rendering/SdfFontHandler.js +381 -0
  350. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  351. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  352. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  353. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  354. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  355. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  356. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  357. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  358. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/TextRenderer.js} +20 -38
  359. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  360. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  361. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  362. package/dist/src/core/text-rendering/Utils.js +84 -0
  363. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  364. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  365. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  366. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -5
  367. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  368. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
  369. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
  370. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  371. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  372. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +87 -46
  373. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  374. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  375. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
  376. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  377. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
  378. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
  379. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  380. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  381. package/dist/src/core/textures/ColorTexture.js +3 -4
  382. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  383. package/dist/src/core/textures/ImageTexture.d.ts +33 -14
  384. package/dist/src/core/textures/ImageTexture.js +46 -125
  385. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  386. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  387. package/dist/src/core/textures/NoiseTexture.js +8 -8
  388. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  389. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  390. package/dist/src/core/textures/RenderTexture.js +12 -12
  391. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  392. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  393. package/dist/src/core/textures/SubTexture.js +22 -40
  394. package/dist/src/core/textures/SubTexture.js.map +1 -1
  395. package/dist/src/core/textures/Texture.d.ts +74 -15
  396. package/dist/src/core/textures/Texture.js +131 -19
  397. package/dist/src/core/textures/Texture.js.map +1 -1
  398. package/dist/src/core/utils.d.ts +2 -1
  399. package/dist/src/core/utils.js +1 -1
  400. package/dist/src/core/utils.js.map +1 -1
  401. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  402. package/dist/src/main-api/DynamicShaderController.js +58 -0
  403. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  404. package/dist/src/main-api/Inspector.d.ts +129 -1
  405. package/dist/src/main-api/Inspector.js +462 -23
  406. package/dist/src/main-api/Inspector.js.map +1 -1
  407. package/dist/src/main-api/Renderer.d.ts +223 -41
  408. package/dist/src/main-api/Renderer.js +107 -62
  409. package/dist/src/main-api/Renderer.js.map +1 -1
  410. package/dist/src/main-api/ShaderController.d.ts +31 -0
  411. package/dist/src/main-api/ShaderController.js +37 -0
  412. package/dist/src/main-api/ShaderController.js.map +1 -0
  413. package/dist/src/utils.d.ts +0 -2
  414. package/dist/src/utils.js +0 -36
  415. package/dist/src/utils.js.map +1 -1
  416. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  417. package/dist/tsconfig.tsbuildinfo +1 -0
  418. package/exports/canvas-shaders.ts +28 -28
  419. package/exports/canvas.ts +45 -45
  420. package/exports/index.ts +90 -90
  421. package/exports/inspector.ts +24 -24
  422. package/exports/platform.ts +31 -0
  423. package/exports/utils.ts +50 -50
  424. package/exports/webgl-shaders.ts +28 -28
  425. package/exports/webgl.ts +52 -50
  426. package/package.json +16 -15
  427. package/src/common/CommonTypes.ts +163 -146
  428. package/src/common/EventEmitter.ts +77 -77
  429. package/src/common/IAnimationController.ts +92 -92
  430. package/src/common/IEventEmitter.ts +28 -28
  431. package/src/core/Autosizer.ts +224 -0
  432. package/src/core/CoreNode.test.ts +365 -202
  433. package/src/core/CoreNode.ts +2785 -2489
  434. package/src/core/CoreShaderManager.ts +188 -188
  435. package/src/core/CoreTextNode.test.ts +311 -0
  436. package/src/core/CoreTextNode.ts +598 -451
  437. package/src/core/CoreTextureManager.ts +484 -548
  438. package/src/core/Stage.ts +927 -800
  439. package/src/core/TextureError.ts +46 -0
  440. package/src/core/TextureMemoryManager.ts +418 -462
  441. package/src/core/animations/AnimationManager.ts +38 -38
  442. package/src/core/animations/CoreAnimation.ts +290 -291
  443. package/src/core/animations/CoreAnimationController.ts +169 -166
  444. package/src/core/lib/ContextSpy.ts +41 -41
  445. package/src/core/lib/Matrix3d.ts +244 -244
  446. package/src/core/lib/RenderCoords.ts +71 -71
  447. package/src/core/lib/collectionUtils.ts +83 -0
  448. package/src/core/lib/colorCache.ts +20 -0
  449. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
  450. package/src/core/lib/utils.ts +337 -390
  451. package/src/core/platforms/GlContextWrapper.ts +291 -0
  452. package/src/core/platforms/Platform.ts +176 -77
  453. package/src/core/{lib → platforms/web}/WebGlContextWrapper.ts +1547 -1368
  454. package/src/core/platforms/web/WebPlatform.ts +306 -84
  455. package/src/core/platforms/web/WebPlatformChrome50.ts +63 -0
  456. package/src/core/platforms/web/WebPlatformLegacy.ts +150 -0
  457. package/src/core/platforms/web/WebPlatformNext.ts +57 -0
  458. package/src/core/platforms/web/lib/ImageWorker.ts +192 -0
  459. package/src/core/platforms/web/lib/ImageWorkerDefault.ts +117 -0
  460. package/src/core/platforms/web/lib/ImageWorkerLegacy.ts +87 -0
  461. package/src/core/platforms/web/lib/ImageWorkerNoOptions.ts +99 -0
  462. package/src/core/platforms/web/lib/createImageBitmap.ts +40 -0
  463. package/src/core/platforms/web/lib/textureCompression.ts +391 -0
  464. package/src/core/{lib → platforms/web/lib}/textureSvg.ts +66 -78
  465. package/src/core/platforms/web/lib/utils.ts +105 -0
  466. package/src/core/renderers/CoreContextTexture.ts +44 -43
  467. package/src/core/renderers/CoreRenderOp.ts +22 -22
  468. package/src/core/renderers/CoreRenderer.ts +71 -110
  469. package/src/core/renderers/CoreShaderNode.ts +202 -175
  470. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  471. package/src/core/renderers/canvas/CanvasRenderer.ts +258 -302
  472. package/src/core/renderers/canvas/CanvasShaderNode.ts +95 -96
  473. package/src/core/renderers/canvas/CanvasTexture.ts +160 -156
  474. package/src/core/renderers/webgl/SdfRenderOp.ts +106 -0
  475. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +89 -86
  476. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
  477. package/src/core/renderers/webgl/WebGlCtxTexture.ts +350 -298
  478. package/src/core/renderers/webgl/WebGlRenderer.ts +726 -747
  479. package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -435
  480. package/src/core/renderers/webgl/WebGlShaderProgram.ts +362 -341
  481. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  482. package/src/core/renderers/webgl/internal/RendererUtils.ts +151 -155
  483. package/src/core/renderers/webgl/internal/ShaderUtils.ts +283 -281
  484. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  485. package/src/core/shaders/canvas/Border.ts +132 -78
  486. package/src/core/shaders/canvas/HolePunch.ts +56 -62
  487. package/src/core/shaders/canvas/LinearGradient.ts +73 -71
  488. package/src/core/shaders/canvas/RadialGradient.ts +96 -99
  489. package/src/core/shaders/canvas/Rounded.ts +55 -55
  490. package/src/core/shaders/canvas/RoundedWithBorder.ts +122 -74
  491. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +136 -90
  492. package/src/core/shaders/canvas/RoundedWithShadow.ts +71 -70
  493. package/src/core/shaders/canvas/Shadow.ts +54 -52
  494. package/src/core/shaders/canvas/utils/render.ts +160 -151
  495. package/src/core/shaders/templates/BorderTemplate.ts +145 -115
  496. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  497. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  498. package/src/core/shaders/templates/RadialGradientTemplate.ts +83 -81
  499. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  500. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  501. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  502. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  503. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  504. package/src/core/shaders/utils.ts +46 -46
  505. package/src/core/shaders/webgl/Border.ts +169 -116
  506. package/src/core/shaders/webgl/Default.ts +88 -89
  507. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  508. package/src/core/shaders/webgl/HolePunch.ts +75 -75
  509. package/src/core/shaders/webgl/LinearGradient.ts +106 -82
  510. package/src/core/shaders/webgl/RadialGradient.ts +108 -85
  511. package/src/core/shaders/webgl/Rounded.ts +115 -117
  512. package/src/core/shaders/webgl/RoundedWithBorder.ts +210 -155
  513. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -175
  514. package/src/core/shaders/webgl/RoundedWithShadow.ts +96 -98
  515. package/src/core/shaders/webgl/SdfShader.ts +122 -134
  516. package/src/core/shaders/webgl/Shadow.ts +121 -115
  517. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  518. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  519. package/src/core/text-rendering/SdfFontHandler.ts +584 -0
  520. package/src/core/text-rendering/SdfTextRenderer.ts +403 -0
  521. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  522. package/src/core/text-rendering/TextRenderer.ts +444 -0
  523. package/src/core/text-rendering/Utils.ts +99 -0
  524. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  525. package/src/core/textures/ColorTexture.ts +104 -102
  526. package/src/core/textures/ImageTexture.ts +292 -418
  527. package/src/core/textures/NoiseTexture.ts +106 -104
  528. package/src/core/textures/RenderTexture.ts +87 -85
  529. package/src/core/textures/SubTexture.ts +184 -205
  530. package/src/core/textures/Texture.ts +524 -381
  531. package/src/core/utils.ts +229 -227
  532. package/src/env.d.ts +7 -7
  533. package/src/main-api/INode.ts +100 -100
  534. package/src/main-api/Inspector.ts +1278 -569
  535. package/src/main-api/Renderer.ts +1030 -818
  536. package/src/main-api/utils.ts +45 -45
  537. package/src/utils.ts +220 -267
  538. package/COPYING +0 -1
  539. package/src/core/lib/ImageWorker.ts +0 -286
  540. package/src/core/lib/textureCompression.ts +0 -152
  541. package/src/core/lib/validateImageBitmap.ts +0 -87
  542. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  543. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
  544. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  545. package/src/core/text-rendering/TrFontManager.ts +0 -183
  546. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  547. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  548. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  549. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  550. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  551. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  552. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  553. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -514
  554. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -863
  555. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -793
  556. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  557. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  558. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  559. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  560. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  561. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -497
  562. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  563. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  564. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  565. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  566. 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
+ }