@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
@@ -0,0 +1,21 @@
1
+ export interface IParsedColor {
2
+ isWhite: boolean;
3
+ a: number;
4
+ r: number;
5
+ g: number;
6
+ b: number;
7
+ }
8
+ /**
9
+ * Extract color components
10
+ */
11
+ export declare function parseColor(abgr: number): IParsedColor;
12
+ export declare function parseToAbgrString(abgr: number): string;
13
+ export declare function parseToRgbaString(rgba: number): string;
14
+ /**
15
+ * Extract color components
16
+ */
17
+ export declare function parseColorRgba(rgba: number): IParsedColor;
18
+ /**
19
+ * Format a parsed color into a rgba CSS color
20
+ */
21
+ export declare function formatRgba({ a, r, g, b }: IParsedColor): string;
@@ -0,0 +1,72 @@
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
+ const WHITE = {
20
+ isWhite: true,
21
+ a: 1,
22
+ r: 0xff,
23
+ g: 0xff,
24
+ b: 0xff,
25
+ };
26
+ /**
27
+ * Extract color components
28
+ */
29
+ export function parseColor(abgr) {
30
+ if (abgr === 0xffffffff) {
31
+ return WHITE;
32
+ }
33
+ const a = ((abgr >>> 24) & 0xff) / 255;
34
+ const b = (abgr >>> 16) & 0xff & 0xff;
35
+ const g = (abgr >>> 8) & 0xff & 0xff;
36
+ const r = abgr & 0xff & 0xff;
37
+ return { isWhite: false, a, r, g, b };
38
+ }
39
+ export function parseToAbgrString(abgr) {
40
+ const a = ((abgr >>> 24) & 0xff) / 255;
41
+ const b = (abgr >>> 16) & 0xff & 0xff;
42
+ const g = (abgr >>> 8) & 0xff & 0xff;
43
+ const r = abgr & 0xff & 0xff;
44
+ return `rgba(${r},${g},${b},${a})`;
45
+ }
46
+ export function parseToRgbaString(rgba) {
47
+ const r = (rgba >>> 24) & 0xff;
48
+ const g = (rgba >>> 16) & 0xff & 0xff;
49
+ const b = (rgba >>> 8) & 0xff & 0xff;
50
+ const a = (rgba & 0xff & 0xff) / 255;
51
+ return `rgba(${r},${g},${b},${a})`;
52
+ }
53
+ /**
54
+ * Extract color components
55
+ */
56
+ export function parseColorRgba(rgba) {
57
+ if (rgba === 0xffffffff) {
58
+ return WHITE;
59
+ }
60
+ const r = (rgba >>> 24) & 0xff;
61
+ const g = (rgba >>> 16) & 0xff & 0xff;
62
+ const b = (rgba >>> 8) & 0xff & 0xff;
63
+ const a = (rgba & 0xff & 0xff) / 255;
64
+ return { isWhite: false, r, g, b, a };
65
+ }
66
+ /**
67
+ * Format a parsed color into a rgba CSS color
68
+ */
69
+ export function formatRgba({ a, r, g, b }) {
70
+ return `rgba(${r},${g},${b},${a})`;
71
+ }
72
+ //# sourceMappingURL=colorParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorParser.js","sourceRoot":"","sources":["../../../../src/core/lib/colorParser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import { type TextureData } from '../textures/Texture.js';
1
+ import { type CompressedData, type TextureData } from '../textures/Texture.js';
2
+ import type { WebGlContextWrapper } from './WebGlContextWrapper.js';
3
+ export type UploadCompressedTextureFunction = (glw: WebGlContextWrapper, texture: WebGLTexture, data: CompressedData) => void;
2
4
  /**
3
5
  * Tests if the given location is a compressed texture container
4
6
  * @param url
@@ -7,10 +9,20 @@ import { type TextureData } from '../textures/Texture.js';
7
9
  * and only supports the following extensions: .ktx and .pvr
8
10
  * @returns
9
11
  */
10
- export declare function isCompressedTextureContainer(url: string): boolean;
12
+ export declare function isCompressedTextureContainer(src: string): boolean;
11
13
  /**
12
14
  * Loads a compressed texture container
13
15
  * @param url
14
16
  * @returns
15
17
  */
16
18
  export declare const loadCompressedTexture: (url: string) => Promise<TextureData>;
19
+ type BlockInfo = {
20
+ width: number;
21
+ height: number;
22
+ bytes: number;
23
+ };
24
+ export declare const blockInfoMap: {
25
+ [key: number]: BlockInfo;
26
+ };
27
+ export declare const uploadCompressedTexture: Record<string, UploadCompressedTextureFunction>;
28
+ export {};
@@ -25,104 +25,357 @@ import {} from '../textures/Texture.js';
25
25
  * and only supports the following extensions: .ktx and .pvr
26
26
  * @returns
27
27
  */
28
- export function isCompressedTextureContainer(url) {
29
- return /\.(ktx|pvr)$/.test(url);
28
+ export function isCompressedTextureContainer(src) {
29
+ return /\.(ktx|pvr)$/.test(src);
30
30
  }
31
+ const PVR_MAGIC = 0x03525650; // 'PVR3' in little-endian
32
+ const PVR_TO_GL_INTERNAL_FORMAT = {
33
+ 0: 0x8c01,
34
+ 1: 0x8c03,
35
+ 2: 0x8c00,
36
+ 3: 0x8c02, // PVRTC1
37
+ 6: 0x8d64, // ETC1
38
+ 7: 0x83f0,
39
+ 8: 0x83f2,
40
+ 9: 0x83f2,
41
+ 10: 0x83f3,
42
+ 11: 0x83f3, // DXT variants
43
+ };
44
+ const ASTC_MAGIC = 0x5ca1ab13;
45
+ const ASTC_TO_GL_INTERNAL_FORMAT = {
46
+ '4x4': 0x93b0, // COMPRESSED_RGBA_ASTC_4x4_KHR
47
+ '5x5': 0x93b1, // COMPRESSED_RGBA_ASTC_5x5_KHR
48
+ '6x6': 0x93b2, // COMPRESSED_RGBA_ASTC_6x6_KHR
49
+ '8x8': 0x93b3, // COMPRESSED_RGBA_ASTC_8x8_KHR
50
+ '10x10': 0x93b4, // COMPRESSED_RGBA_ASTC_10x10_KHR
51
+ '12x12': 0x93b5, // COMPRESSED_RGBA_ASTC_12x12_KHR
52
+ };
53
+ // KTX file identifier
54
+ const KTX_IDENTIFIER = [
55
+ 0xab, 0x4b, 0x54, 0x58, 0x20, 0x31, 0x31, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a,
56
+ ];
31
57
  /**
32
58
  * Loads a compressed texture container
33
59
  * @param url
34
60
  * @returns
35
61
  */
36
62
  export const loadCompressedTexture = async (url) => {
37
- const response = await fetch(url);
38
- const arrayBuffer = await response.arrayBuffer();
39
- if (url.indexOf('.ktx') !== -1) {
40
- return loadKTXData(arrayBuffer);
63
+ try {
64
+ const response = await fetch(url);
65
+ if (!response.ok) {
66
+ throw new Error(`Failed to fetch compressed texture: ${response.status} ${response.statusText}`);
67
+ }
68
+ const arrayBuffer = await response.arrayBuffer();
69
+ // Ensure we have enough data to check magic numbers
70
+ if (arrayBuffer.byteLength < 16) {
71
+ throw new Error(`File too small to be a valid compressed texture (${arrayBuffer.byteLength} bytes). Expected at least 16 bytes for header inspection.`);
72
+ }
73
+ const view = new DataView(arrayBuffer);
74
+ const magic = view.getUint32(0, true);
75
+ if (magic === PVR_MAGIC) {
76
+ return loadPVR(view);
77
+ }
78
+ if (magic === ASTC_MAGIC) {
79
+ return loadASTC(view);
80
+ }
81
+ let isKTX = true;
82
+ for (let i = 0; i < KTX_IDENTIFIER.length; i++) {
83
+ if (view.getUint8(i) !== KTX_IDENTIFIER[i]) {
84
+ isKTX = false;
85
+ break;
86
+ }
87
+ }
88
+ if (isKTX === true) {
89
+ return loadKTX(view);
90
+ }
91
+ else {
92
+ throw new Error('Unrecognized compressed texture format');
93
+ }
94
+ }
95
+ catch (error) {
96
+ throw new Error(`Failed to load compressed texture from ${url}: ${error}`);
41
97
  }
42
- return loadPVRData(arrayBuffer);
43
98
  };
99
+ function readUint24(view, offset) {
100
+ return (view.getUint8(offset) +
101
+ (view.getUint8(offset + 1) << 8) +
102
+ (view.getUint8(offset + 2) << 16));
103
+ }
44
104
  /**
45
- * Loads a KTX texture container and returns the texture data
46
- * @param buffer
105
+ * Loads an ASTC texture container and returns the texture data
106
+ * @param view
47
107
  * @returns
48
108
  */
49
- const loadKTXData = async (buffer) => {
50
- const view = new DataView(buffer);
51
- const littleEndian = view.getUint32(12) === 16909060 ? true : false;
52
- const mipmaps = [];
53
- const data = {
54
- glInternalFormat: view.getUint32(28, littleEndian),
55
- pixelWidth: view.getUint32(36, littleEndian),
56
- pixelHeight: view.getUint32(40, littleEndian),
57
- numberOfMipmapLevels: view.getUint32(56, littleEndian),
58
- bytesOfKeyValueData: view.getUint32(60, littleEndian),
59
- };
60
- let offset = 64;
61
- // Key Value Pairs of data start at byte offset 64
62
- // But the only known kvp is the API version, so skipping parsing.
63
- offset += data.bytesOfKeyValueData;
64
- for (let i = 0; i < data.numberOfMipmapLevels; i++) {
65
- const imageSize = view.getUint32(offset);
66
- offset += 4;
67
- mipmaps.push(view.buffer.slice(offset, imageSize));
68
- offset += imageSize;
109
+ const loadASTC = async function (view) {
110
+ const blockX = view.getUint8(4);
111
+ const blockY = view.getUint8(5);
112
+ const sizeX = readUint24(view, 7);
113
+ const sizeY = readUint24(view, 10);
114
+ if (sizeX === 0 || sizeY === 0) {
115
+ throw new Error(`Invalid ASTC texture dimensions: ${sizeX}x${sizeY}`);
116
+ }
117
+ const expected = Math.ceil(sizeX / blockX) * Math.ceil(sizeY / blockY) * 16;
118
+ const dataSize = view.byteLength - 16;
119
+ if (expected !== dataSize) {
120
+ throw new Error(`Invalid ASTC texture data size: expected ${expected}, got ${dataSize}`);
69
121
  }
122
+ const internalFormat = ASTC_TO_GL_INTERNAL_FORMAT[`${blockX}x${blockY}`];
123
+ if (internalFormat === undefined) {
124
+ throw new Error(`Unsupported ASTC block size: ${blockX}x${blockY}`);
125
+ }
126
+ const buffer = view.buffer;
127
+ const mipmaps = [];
128
+ mipmaps.push(buffer.slice(16));
70
129
  return {
71
130
  data: {
72
- glInternalFormat: data.glInternalFormat,
131
+ blockInfo: blockInfoMap[internalFormat],
132
+ glInternalFormat: internalFormat,
73
133
  mipmaps,
74
- width: data.pixelWidth || 0,
75
- height: data.pixelHeight || 0,
76
- type: 'ktx',
134
+ w: sizeX,
135
+ h: sizeY,
136
+ type: 'astc',
77
137
  },
78
138
  premultiplyAlpha: false,
79
139
  };
80
140
  };
141
+ const uploadASTC = function (glw, texture, data) {
142
+ if (glw.getExtension('WEBGL_compressed_texture_astc') === null) {
143
+ throw new Error('ASTC compressed textures not supported by this device');
144
+ }
145
+ glw.bindTexture(texture);
146
+ const { glInternalFormat, mipmaps, w, h } = data;
147
+ if (mipmaps === undefined) {
148
+ return;
149
+ }
150
+ const view = new Uint8Array(mipmaps[0]);
151
+ glw.compressedTexImage2D(0, glInternalFormat, w, h, 0, view);
152
+ // ASTC textures MUST use no mipmaps unless stored
153
+ glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
154
+ glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
155
+ glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
156
+ glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
157
+ };
81
158
  /**
82
- * Loads a PVR texture container and returns the texture data
83
- * @param buffer
159
+ * Loads a KTX texture container and returns the texture data
160
+ * @param view
84
161
  * @returns
85
162
  */
86
- const loadPVRData = async (buffer) => {
87
- // pvr header length in 32 bits
88
- const pvrHeaderLength = 13;
89
- // for now only we only support: COMPRESSED_RGB_ETC1_WEBGL
90
- const pvrFormatEtc1 = 0x8d64;
91
- const pvrWidth = 7;
92
- const pvrHeight = 6;
93
- const pvrMipmapCount = 11;
94
- const pvrMetadata = 12;
95
- const arrayBuffer = buffer;
96
- const header = new Int32Array(arrayBuffer, 0, pvrHeaderLength);
97
- // @ts-expect-error Object possibly undefined
98
- const dataOffset = header[pvrMetadata] + 52;
99
- const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);
163
+ const loadKTX = async function (view) {
164
+ const endianness = view.getUint32(12, true);
165
+ const littleEndian = endianness === 0x04030201;
166
+ if (littleEndian === false && endianness !== 0x01020304) {
167
+ throw new Error('Invalid KTX endianness value');
168
+ }
169
+ const glType = view.getUint32(16, littleEndian);
170
+ const glFormat = view.getUint32(24, littleEndian);
171
+ if (glType !== 0 || glFormat !== 0) {
172
+ throw new Error(`KTX texture is not compressed (glType: ${glType}, glFormat: ${glFormat})`);
173
+ }
174
+ const glInternalFormat = view.getUint32(28, littleEndian);
175
+ if (blockInfoMap[glInternalFormat] === undefined) {
176
+ throw new Error(`Unsupported KTX compressed texture format: 0x${glInternalFormat.toString(16)}`);
177
+ }
178
+ const width = view.getUint32(36, littleEndian);
179
+ const height = view.getUint32(40, littleEndian);
180
+ if (width === 0 || height === 0) {
181
+ throw new Error(`Invalid KTX texture dimensions: ${width}x${height}`);
182
+ }
183
+ const mipmapLevels = view.getUint32(56, littleEndian);
184
+ if (mipmapLevels === 0) {
185
+ throw new Error('KTX texture has no mipmap levels');
186
+ }
187
+ const bytesOfKeyValueData = view.getUint32(60, littleEndian);
100
188
  const mipmaps = [];
101
- const data = {
102
- pixelWidth: header[pvrWidth],
103
- pixelHeight: header[pvrHeight],
104
- numberOfMipmapLevels: header[pvrMipmapCount] || 0,
189
+ const buffer = view.buffer;
190
+ let offset = 64 + bytesOfKeyValueData;
191
+ if (offset > view.byteLength) {
192
+ throw new Error('Invalid KTX file: key/value data exceeds file size');
193
+ }
194
+ for (let i = 0; i < mipmapLevels; i++) {
195
+ const imageSize = view.getUint32(offset, littleEndian);
196
+ offset += 4;
197
+ const end = offset + imageSize;
198
+ mipmaps.push(buffer.slice(offset, end));
199
+ offset = end;
200
+ if (offset % 4 !== 0) {
201
+ offset += 4 - (offset % 4);
202
+ }
203
+ }
204
+ return {
205
+ data: {
206
+ blockInfo: blockInfoMap[glInternalFormat],
207
+ glInternalFormat: glInternalFormat,
208
+ mipmaps,
209
+ w: width,
210
+ h: height,
211
+ type: 'ktx',
212
+ },
213
+ premultiplyAlpha: false,
105
214
  };
106
- let offset = 0;
107
- let width = data.pixelWidth || 0;
108
- let height = data.pixelHeight || 0;
109
- for (let i = 0; i < data.numberOfMipmapLevels; i++) {
110
- const level = ((width + 3) >> 2) * ((height + 3) >> 2) * 8;
111
- const view = new Uint8Array(arrayBuffer, pvrtcData.byteOffset + offset, level);
112
- mipmaps.push(view);
113
- offset += level;
114
- width = width >> 1;
115
- height = height >> 1;
215
+ };
216
+ const uploadKTX = function (glw, texture, data) {
217
+ const { glInternalFormat, mipmaps, w: width, h: height, blockInfo } = data;
218
+ if (mipmaps === undefined) {
219
+ return;
220
+ }
221
+ glw.bindTexture(texture);
222
+ const blockWidth = blockInfo.width;
223
+ const blockHeight = blockInfo.height;
224
+ let w = width;
225
+ let h = height;
226
+ for (let i = 0; i < mipmaps.length; i++) {
227
+ let view = new Uint8Array(mipmaps[i]);
228
+ const uploadW = Math.ceil(w / blockWidth) * blockWidth;
229
+ const uploadH = Math.ceil(h / blockHeight) * blockHeight;
230
+ const expectedBytes = Math.ceil(w / blockWidth) * Math.ceil(h / blockHeight) * blockInfo.bytes;
231
+ if (view.byteLength < expectedBytes) {
232
+ const padded = new Uint8Array(expectedBytes);
233
+ padded.set(view);
234
+ view = padded;
235
+ }
236
+ glw.compressedTexImage2D(i, glInternalFormat, uploadW, uploadH, 0, view);
237
+ w = Math.max(1, w >> 1);
238
+ h = Math.max(1, h >> 1);
239
+ }
240
+ glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
241
+ glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
242
+ glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
243
+ glw.texParameteri(glw.TEXTURE_MIN_FILTER, mipmaps.length > 1 ? glw.LINEAR_MIPMAP_LINEAR : glw.LINEAR);
244
+ };
245
+ function pvrtcMipSize(width, height, bpp) {
246
+ const minW = bpp === 2 ? 16 : 8;
247
+ const minH = 8;
248
+ const w = Math.max(width, minW);
249
+ const h = Math.max(height, minH);
250
+ return (w * h * bpp) / 8;
251
+ }
252
+ const loadPVR = async function (view) {
253
+ const pixelFormatLow = view.getUint32(8, true);
254
+ const internalFormat = PVR_TO_GL_INTERNAL_FORMAT[pixelFormatLow];
255
+ if (internalFormat === undefined) {
256
+ throw new Error(`Unsupported PVR pixel format: 0x${pixelFormatLow.toString(16)}`);
257
+ }
258
+ const height = view.getInt32(24, true);
259
+ const width = view.getInt32(28, true);
260
+ // validate dimensions
261
+ if (width === 0 || height === 0) {
262
+ throw new Error(`Invalid PVR texture dimensions: ${width}x${height}`);
263
+ }
264
+ const mipmapLevels = view.getInt32(44, true);
265
+ const metadataSize = view.getUint32(48, true);
266
+ const buffer = view.buffer;
267
+ let offset = 52 + metadataSize;
268
+ if (offset > buffer.byteLength) {
269
+ throw new Error('Invalid PVR file: metadata exceeds file size');
270
+ }
271
+ const mipmaps = [];
272
+ const block = blockInfoMap[internalFormat];
273
+ for (let i = 0; i < mipmapLevels; i++) {
274
+ const declaredSize = view.getUint32(offset, true);
275
+ const max = buffer.byteLength - (offset + 4);
276
+ if (declaredSize > 0 && declaredSize <= max) {
277
+ offset += 4;
278
+ const start = offset;
279
+ const end = offset + declaredSize;
280
+ mipmaps.push(buffer.slice(start, end));
281
+ offset = end;
282
+ offset = (offset + 3) & ~3; // align to 4 bytes
283
+ continue;
284
+ }
285
+ if (pixelFormatLow === 0 ||
286
+ pixelFormatLow === 1 ||
287
+ pixelFormatLow === 2 ||
288
+ pixelFormatLow === 3) {
289
+ const bpp = pixelFormatLow === 0 || pixelFormatLow === 1 ? 2 : 4;
290
+ const computed = pvrtcMipSize(width >> i, height >> i, bpp);
291
+ mipmaps.push(buffer.slice(offset, offset + computed));
292
+ offset += computed;
293
+ offset = (offset + 3) & ~3; // align to 4 bytes
294
+ continue;
295
+ }
296
+ if (block !== undefined) {
297
+ const blockW = Math.ceil((width >> i) / block.width);
298
+ const blockH = Math.ceil((height >> i) / block.height);
299
+ const computed = blockW * blockH * block.bytes;
300
+ mipmaps.push(buffer.slice(offset, offset + computed));
301
+ offset += computed;
302
+ offset = (offset + 3) & ~3;
303
+ }
116
304
  }
117
305
  return {
118
306
  data: {
119
- glInternalFormat: pvrFormatEtc1,
120
- mipmaps: mipmaps,
121
- width: data.pixelWidth || 0,
122
- height: data.pixelHeight || 0,
307
+ blockInfo: blockInfoMap[internalFormat],
308
+ glInternalFormat: internalFormat,
309
+ mipmaps,
310
+ w: width,
311
+ h: height,
123
312
  type: 'pvr',
124
313
  },
125
314
  premultiplyAlpha: false,
126
315
  };
127
316
  };
317
+ const uploadPVR = function (glw, texture, data) {
318
+ const { glInternalFormat, mipmaps, w: width, h: height } = data;
319
+ if (mipmaps === undefined) {
320
+ return;
321
+ }
322
+ glw.bindTexture(texture);
323
+ let w = width;
324
+ let h = height;
325
+ for (let i = 0; i < mipmaps.length; i++) {
326
+ glw.compressedTexImage2D(i, glInternalFormat, w, h, 0, new Uint8Array(mipmaps[i]));
327
+ w = Math.max(1, w >> 1);
328
+ h = Math.max(1, h >> 1);
329
+ }
330
+ glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
331
+ glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
332
+ glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
333
+ glw.texParameteri(glw.TEXTURE_MIN_FILTER, mipmaps.length > 1 ? glw.LINEAR_MIPMAP_LINEAR : glw.LINEAR);
334
+ };
335
+ // Predefined block info for common compressed texture formats
336
+ const BLOCK_4x4x8 = { width: 4, height: 4, bytes: 8 };
337
+ const BLOCK_4x4x16 = { width: 4, height: 4, bytes: 16 };
338
+ const BLOCK_5x5x16 = { width: 5, height: 5, bytes: 16 };
339
+ const BLOCK_6x6x16 = { width: 6, height: 6, bytes: 16 };
340
+ const BLOCK_8x4x8 = { width: 8, height: 4, bytes: 8 };
341
+ const BLOCK_8x8x16 = { width: 8, height: 8, bytes: 16 };
342
+ const BLOCK_10x10x16 = { width: 10, height: 10, bytes: 16 };
343
+ const BLOCK_12x12x16 = { width: 12, height: 12, bytes: 16 };
344
+ // Map of GL internal formats to their corresponding block info
345
+ export const blockInfoMap = {
346
+ // S3TC / DXTn (WEBGL_compressed_texture_s3tc, sRGB variants)
347
+ 0x83f0: BLOCK_4x4x8, // COMPRESSED_RGB_S3TC_DXT1_EXT
348
+ 0x83f1: BLOCK_4x4x8, // COMPRESSED_RGBA_S3TC_DXT1_EXT
349
+ 0x83f2: BLOCK_4x4x16, // COMPRESSED_RGBA_S3TC_DXT3_EXT
350
+ 0x83f3: BLOCK_4x4x16, // COMPRESSED_RGBA_S3TC_DXT5_EXT
351
+ // ETC1 / ETC2 / EAC
352
+ 0x8d64: BLOCK_4x4x8, // COMPRESSED_RGB_ETC1_WEBGL
353
+ 0x9274: BLOCK_4x4x8, // COMPRESSED_RGB8_ETC2
354
+ 0x9275: BLOCK_4x4x8, // COMPRESSED_SRGB8_ETC2
355
+ 0x9278: BLOCK_4x4x16, // COMPRESSED_RGBA8_ETC2_EAC
356
+ 0x9279: BLOCK_4x4x16, // COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
357
+ // PVRTC (WEBGL_compressed_texture_pvrtc)
358
+ 0x8c00: BLOCK_4x4x8, // COMPRESSED_RGB_PVRTC_4BPPV1_IMG
359
+ 0x8c02: BLOCK_4x4x8, // COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
360
+ 0x8c01: BLOCK_8x4x8, // COMPRESSED_RGB_PVRTC_2BPPV1_IMG
361
+ 0x8c03: BLOCK_8x4x8,
362
+ // ASTC (WEBGL_compressed_texture_astc)
363
+ 0x93b0: BLOCK_4x4x16, // COMPRESSED_RGBA_ASTC_4x4_KHR
364
+ 0x93d0: BLOCK_4x4x16, // COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
365
+ 0x93b1: BLOCK_5x5x16, // 5x5
366
+ 0x93d1: BLOCK_5x5x16,
367
+ 0x93b2: BLOCK_6x6x16, // 6x6
368
+ 0x93d2: BLOCK_6x6x16,
369
+ 0x93b3: BLOCK_8x8x16, // 8x8
370
+ 0x93d3: BLOCK_8x8x16,
371
+ 0x93b4: BLOCK_10x10x16, // 10x10
372
+ 0x93d4: BLOCK_10x10x16,
373
+ 0x93b5: BLOCK_12x12x16, // 12x12
374
+ 0x93d5: BLOCK_12x12x16,
375
+ };
376
+ export const uploadCompressedTexture = {
377
+ ktx: uploadKTX,
378
+ pvr: uploadPVR,
379
+ astc: uploadASTC,
380
+ };
128
381
  //# sourceMappingURL=textureCompression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textureCompression.js","sourceRoot":"","sources":["../../../../src/core/lib/textureCompression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAoB,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAW;IACtD,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,GAAW,EACW,EAAE;IACxB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEjD,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,GAAG,KAAK,EAAE,MAAmB,EAAwB,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG;QACX,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;QAC5C,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;QAC7C,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;QACtD,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;KACtD,CAAC;IAEF,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,kDAAkD;IAClD,kEAAkE;IAClE,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,CAAC;QAEZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,EAAE;YACJ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;YAC7B,IAAI,EAAE,KAAK;SACZ;QACD,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,GAAG,KAAK,EAAE,MAAmB,EAAwB,EAAE;IACtE,+BAA+B;IAC/B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAE/D,6CAA6C;IAE7C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;QAC9B,oBAAoB,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;KAClD,CAAC;IAEF,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,UAAU,CACzB,WAAW,EACX,SAAS,CAAC,UAAU,GAAG,MAAM,EAC7B,KAAK,CACN,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC;QAChB,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;QACnB,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,EAAE;YACJ,gBAAgB,EAAE,aAAa;YAC/B,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;YAC7B,IAAI,EAAE,KAAK;SACZ;QACD,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"textureCompression.js","sourceRoot":"","sources":["../../../../src/core/lib/textureCompression.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import type { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
2
- export declare const PROTOCOL_REGEX: RegExp;
3
2
  export type RGBA = [r: number, g: number, b: number, a: number];
4
3
  export declare const getNormalizedRgbaComponents: (rgba: number) => RGBA;
5
4
  export declare const getRgbaComponents: (rgba: number) => RGBA;
@@ -15,8 +14,8 @@ export declare function getRgbaString(color: RGBA): string;
15
14
  export interface Rect {
16
15
  x: number;
17
16
  y: number;
18
- width: number;
19
- height: number;
17
+ w: number;
18
+ h: number;
20
19
  }
21
20
  export interface RectWithValid extends Rect {
22
21
  valid: boolean;
@@ -27,6 +26,10 @@ export interface Bound {
27
26
  x2: number;
28
27
  y2: number;
29
28
  }
29
+ export interface Coord {
30
+ x: number;
31
+ y: number;
32
+ }
30
33
  export interface BoundWithValid extends Bound {
31
34
  valid: boolean;
32
35
  }
@@ -53,9 +56,6 @@ export declare function isRectPositive(rect: Rect): boolean;
53
56
  * @returns
54
57
  */
55
58
  export declare function createPreloadBounds(strictBound: Bound, boundsMargin: [number, number, number, number]): Bound;
56
- export declare function convertUrlToAbsolute(url: string): string;
57
- export declare function isBase64Image(src: string): boolean;
58
59
  export declare function calcFactoredRadius(radius: number, width: number, height: number): number;
59
60
  export declare function valuesAreEqual(values: number[]): boolean;
60
61
  export declare function calcFactoredRadiusArray(radius: Vec4, width: number, height: number): [number, number, number, number];
61
- export declare function dataURIToBlob(dataURI: string): Blob;