@lightningjs/renderer 2.13.0 → 3.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +27 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +7 -1
  8. package/dist/exports/canvas.js +7 -1
  9. package/dist/exports/canvas.js.map +1 -1
  10. package/dist/exports/core-api.d.ts +74 -0
  11. package/dist/exports/core-api.js +96 -0
  12. package/dist/exports/core-api.js.map +1 -0
  13. package/dist/exports/index.d.ts +15 -8
  14. package/dist/exports/index.js +7 -4
  15. package/dist/exports/index.js.map +1 -1
  16. package/dist/exports/main-api.d.ts +30 -0
  17. package/dist/exports/main-api.js +45 -0
  18. package/dist/exports/main-api.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +28 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +9 -1
  23. package/dist/exports/webgl.js +9 -1
  24. package/dist/exports/webgl.js.map +1 -1
  25. package/dist/src/core/CoreExtension.d.ts +12 -0
  26. package/{src/core/renderers/CoreShader.ts → dist/src/core/CoreExtension.js} +29 -41
  27. package/dist/src/core/CoreExtension.js.map +1 -0
  28. package/dist/src/core/CoreNode.d.ts +9 -5
  29. package/dist/src/core/CoreNode.js +27 -10
  30. package/dist/src/core/CoreNode.js.map +1 -1
  31. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  32. package/dist/src/core/CoreShaderManager.js +110 -97
  33. package/dist/src/core/CoreShaderManager.js.map +1 -1
  34. package/dist/src/core/CoreStuff.d.ts +1 -0
  35. package/dist/src/core/CoreStuff.js +138 -0
  36. package/dist/src/core/CoreStuff.js.map +1 -0
  37. package/dist/src/core/CoreTextNode.js +1 -1
  38. package/dist/src/core/CoreTextNode.js.map +1 -1
  39. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  40. package/dist/src/core/CoreTexturizer.js +47 -0
  41. package/dist/src/core/CoreTexturizer.js.map +1 -0
  42. package/dist/src/core/LngNode.d.ts +736 -0
  43. package/dist/src/core/LngNode.js +1174 -0
  44. package/dist/src/core/LngNode.js.map +1 -0
  45. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  46. package/dist/src/core/Matrix2DContext.js +45 -0
  47. package/dist/src/core/Matrix2DContext.js.map +1 -0
  48. package/dist/src/core/ShaderNode.d.ts +10 -0
  49. package/dist/src/core/ShaderNode.js +30 -0
  50. package/dist/src/core/ShaderNode.js.map +1 -0
  51. package/dist/src/core/Stage.d.ts +11 -14
  52. package/dist/src/core/Stage.js +22 -25
  53. package/dist/src/core/Stage.js.map +1 -1
  54. package/dist/src/core/TextNode.d.ts +103 -0
  55. package/dist/src/core/TextNode.js +331 -0
  56. package/dist/src/core/TextNode.js.map +1 -0
  57. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  58. package/dist/src/core/animations/CoreAnimation.js +6 -52
  59. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  60. package/dist/src/core/lib/Coords.d.ts +14 -0
  61. package/dist/src/core/lib/Coords.js +55 -0
  62. package/dist/src/core/lib/Coords.js.map +1 -0
  63. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  64. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  65. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  66. package/dist/src/core/lib/glm/common.d.ts +162 -0
  67. package/dist/src/core/lib/glm/common.js +81 -0
  68. package/dist/src/core/lib/glm/common.js.map +1 -0
  69. package/dist/src/core/lib/glm/index.d.ts +11 -0
  70. package/dist/src/core/lib/glm/index.js +30 -0
  71. package/dist/src/core/lib/glm/index.js.map +1 -0
  72. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  73. package/dist/src/core/lib/glm/mat2.js +396 -0
  74. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  75. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  76. package/dist/src/core/lib/glm/mat2d.js +442 -0
  77. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  78. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  79. package/dist/src/core/lib/glm/mat3.js +680 -0
  80. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  81. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  82. package/dist/src/core/lib/glm/mat4.js +1802 -0
  83. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  84. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  85. package/dist/src/core/lib/glm/quat.js +693 -0
  86. package/dist/src/core/lib/glm/quat.js.map +1 -0
  87. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  88. package/dist/src/core/lib/glm/quat2.js +754 -0
  89. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  90. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  91. package/dist/src/core/lib/glm/vec2.js +569 -0
  92. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  93. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  94. package/dist/src/core/lib/glm/vec3.js +720 -0
  95. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  96. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  97. package/dist/src/core/lib/glm/vec4.js +608 -0
  98. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  99. package/dist/src/core/lib/textureCompression.js +0 -1
  100. package/dist/src/core/lib/textureCompression.js.map +1 -1
  101. package/dist/src/core/lib/utils.d.ts +4 -0
  102. package/dist/src/core/lib/utils.js +26 -0
  103. package/dist/src/core/lib/utils.js.map +1 -1
  104. package/dist/src/core/platform.js +1 -0
  105. package/dist/src/core/platform.js.map +1 -1
  106. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  107. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  108. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  109. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  110. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  111. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  112. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  113. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  114. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  115. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  116. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  117. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  118. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  119. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  120. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  121. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  122. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  123. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  124. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  125. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  126. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  127. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  128. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  129. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  130. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  131. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  132. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  133. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  134. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  135. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  137. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  138. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  140. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  141. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  143. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  144. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  146. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  147. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  149. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  150. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  152. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  153. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  155. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  156. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  158. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  159. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  161. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  162. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  163. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  164. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  165. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  166. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  167. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  168. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  169. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  170. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  171. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  172. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  173. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  174. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  175. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  176. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  177. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  178. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  179. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  180. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  181. package/dist/src/core/scene/Scene.d.ts +59 -0
  182. package/dist/src/core/scene/Scene.js +106 -0
  183. package/dist/src/core/scene/Scene.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  185. package/dist/src/core/shaders/canvas/Border.js +57 -0
  186. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  187. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  188. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  189. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  190. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  191. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  192. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  193. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  194. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  195. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  196. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  197. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  198. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  199. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  200. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  201. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  202. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  203. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  204. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  205. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  206. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  207. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  208. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  209. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  210. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  211. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  212. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  213. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  214. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  215. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  216. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  217. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  218. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  219. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  220. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  221. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  222. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  223. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  224. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  225. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  226. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  227. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  228. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  229. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  230. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  231. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  232. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  233. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  234. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  235. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  236. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  237. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  238. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  239. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  240. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  241. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  242. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  243. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/Border.js +87 -0
  246. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  248. package/dist/src/core/shaders/webgl/Default.js +86 -0
  249. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  251. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  252. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  253. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  254. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  255. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  256. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  257. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  258. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  259. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  260. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  261. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  262. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  263. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  264. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  265. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  266. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  267. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  268. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  269. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  270. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  271. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  272. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  273. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  274. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  275. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  276. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  277. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  278. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  279. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  280. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  281. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  282. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  283. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  284. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  285. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  286. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  287. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  288. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  289. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  290. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  291. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  292. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  293. package/dist/src/core/textures/Texture.d.ts +1 -1
  294. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  295. package/dist/src/main-api/ICoreDriver.js +20 -0
  296. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  297. package/dist/src/main-api/INode.d.ts +9 -9
  298. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  299. package/dist/src/main-api/IRenderDriver.js +20 -0
  300. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  301. package/dist/src/main-api/IShaderController.d.ts +14 -0
  302. package/dist/src/main-api/IShaderController.js +30 -0
  303. package/dist/src/main-api/IShaderController.js.map +1 -0
  304. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  305. package/dist/src/main-api/IShaderNode.js +19 -0
  306. package/dist/src/main-api/IShaderNode.js.map +1 -0
  307. package/dist/src/main-api/Renderer.d.ts +8 -91
  308. package/dist/src/main-api/Renderer.js +3 -54
  309. package/dist/src/main-api/Renderer.js.map +1 -1
  310. package/dist/src/main-api/RendererMain.d.ts +375 -0
  311. package/dist/src/main-api/RendererMain.js +365 -0
  312. package/dist/src/main-api/RendererMain.js.map +1 -0
  313. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  314. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  315. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  316. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  317. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  318. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  319. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  320. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  321. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  322. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  323. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  324. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  325. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  326. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  327. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  328. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  329. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  330. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  331. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  332. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  333. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  334. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  335. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  336. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  337. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  338. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  339. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  340. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  341. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  342. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  343. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  344. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  345. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  346. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  347. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  348. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  349. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  350. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  351. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  352. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  353. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  354. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  355. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  356. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  357. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  358. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  359. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  360. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  361. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  362. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  363. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  364. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  365. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  366. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  367. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  368. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  369. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  370. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  371. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  372. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  373. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  374. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  375. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  376. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  377. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  378. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  379. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  380. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  381. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  382. package/dist/src/render-drivers/utils.d.ts +12 -0
  383. package/dist/src/render-drivers/utils.js +69 -0
  384. package/dist/src/render-drivers/utils.js.map +1 -0
  385. package/dist/src/utils.d.ts +6 -0
  386. package/dist/src/utils.js +18 -0
  387. package/dist/src/utils.js.map +1 -1
  388. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  389. package/exports/canvas-shaders.ts +28 -0
  390. package/exports/canvas.ts +45 -39
  391. package/exports/index.ts +89 -89
  392. package/exports/inspector.ts +24 -24
  393. package/exports/utils.ts +44 -44
  394. package/exports/webgl-shaders.ts +28 -0
  395. package/exports/webgl.ts +50 -38
  396. package/package.json +4 -1
  397. package/scripts/please-use-pnpm.js +13 -13
  398. package/src/common/CommonTypes.ts +146 -146
  399. package/src/common/EventEmitter.ts +77 -77
  400. package/src/common/IAnimationController.ts +92 -92
  401. package/src/common/IEventEmitter.ts +28 -28
  402. package/src/core/CoreNode.test.ts +203 -202
  403. package/src/core/CoreNode.ts +2476 -2455
  404. package/src/core/CoreShaderManager.ts +193 -292
  405. package/src/core/CoreTextNode.ts +448 -455
  406. package/src/core/CoreTextureManager.ts +597 -597
  407. package/src/core/Stage.ts +740 -743
  408. package/src/core/TextureMemoryManager.ts +395 -395
  409. package/src/core/animations/AnimationManager.ts +38 -38
  410. package/src/core/animations/CoreAnimation.ts +284 -340
  411. package/src/core/animations/CoreAnimationController.ts +157 -157
  412. package/src/core/lib/ContextSpy.ts +41 -41
  413. package/src/core/lib/ImageWorker.ts +279 -279
  414. package/src/core/lib/Matrix3d.ts +244 -244
  415. package/src/core/lib/RenderCoords.ts +86 -86
  416. package/src/core/lib/WebGlContextWrapper.ts +1324 -1332
  417. package/src/core/lib/textureCompression.ts +152 -152
  418. package/src/core/lib/textureSvg.ts +78 -78
  419. package/src/core/lib/utils.ts +361 -310
  420. package/src/core/lib/validateImageBitmap.ts +76 -76
  421. package/src/core/platform.ts +64 -63
  422. package/src/core/renderers/CoreContextTexture.ts +43 -43
  423. package/src/core/renderers/CoreRenderOp.ts +22 -22
  424. package/src/core/renderers/CoreRenderer.ts +107 -115
  425. package/src/core/renderers/CoreShaderNode.ts +171 -0
  426. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +23 -48
  427. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  428. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  429. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +153 -153
  430. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -231
  431. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -69
  432. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +86 -86
  433. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +50 -50
  434. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +301 -301
  435. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +145 -125
  436. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +715 -815
  437. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  438. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  439. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  440. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  441. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -143
  442. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  443. package/src/core/shaders/canvas/Border.ts +78 -0
  444. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  445. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  446. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  447. package/src/core/shaders/canvas/Rounded.ts +55 -0
  448. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  449. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  450. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  451. package/src/core/shaders/canvas/Shadow.ts +52 -0
  452. package/src/core/shaders/canvas/utils/render.ts +151 -0
  453. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  454. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  455. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  456. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  457. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  458. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  459. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  460. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  461. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  462. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  463. package/src/core/shaders/webgl/Border.ts +96 -0
  464. package/src/core/shaders/webgl/Default.ts +89 -0
  465. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  466. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  467. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  468. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  469. package/src/core/shaders/webgl/Rounded.ts +117 -0
  470. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  471. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  472. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  473. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  474. package/src/core/shaders/webgl/Shadow.ts +115 -0
  475. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  476. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  477. package/src/core/text-rendering/TrFontManager.ts +183 -183
  478. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  479. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  480. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  481. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  482. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  483. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  484. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  485. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  486. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +815 -808
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +841 -853
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  489. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  490. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  491. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  492. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  493. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  494. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  495. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  496. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  497. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  498. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  499. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  500. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  501. package/src/core/text-rendering/renderers/TextRenderer.ts +550 -557
  502. package/src/core/textures/ColorTexture.ts +102 -102
  503. package/src/core/textures/ImageTexture.ts +376 -376
  504. package/src/core/textures/NoiseTexture.ts +104 -104
  505. package/src/core/textures/RenderTexture.ts +85 -85
  506. package/src/core/textures/SubTexture.ts +205 -205
  507. package/src/core/textures/Texture.ts +337 -337
  508. package/src/core/utils.ts +227 -227
  509. package/src/env.d.ts +7 -7
  510. package/src/main-api/INode.ts +99 -101
  511. package/src/main-api/Inspector.ts +522 -522
  512. package/src/main-api/Renderer.ts +649 -751
  513. package/src/main-api/utils.ts +45 -45
  514. package/src/utils.ts +267 -248
  515. package/COPYING +0 -1
  516. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  517. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  518. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  519. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  520. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  521. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  522. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  523. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  524. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  525. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  526. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  527. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  528. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  529. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  530. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  531. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  532. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  533. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  534. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  535. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  536. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  537. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  538. package/src/main-api/DynamicShaderController.ts +0 -104
  539. package/src/main-api/ShaderController.ts +0 -80
@@ -1,49 +1,49 @@
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 { expect, describe, it } from 'vitest';
21
- import { measureText } from './measureText.js';
22
- import sdfData from 'test/mockdata/Ubuntu-Bold.msdf.json';
23
- import {
24
- SdfFontShaper,
25
- type SdfFontData,
26
- } from '../../../font-face-types/SdfTrFontFace/internal/SdfFontShaper.js';
27
-
28
- const glyphMap = new Map<number, SdfFontData['chars'][0]>();
29
- sdfData.chars.forEach((glyph) => {
30
- glyphMap.set(glyph.id, glyph);
31
- });
32
-
33
- describe('measureText', () => {
34
- it('should measure text width', () => {
35
- const PERIOD_WIDTH = 10.332;
36
- const shaper = new SdfFontShaper(
37
- sdfData as unknown as SdfFontData,
38
- glyphMap,
39
- );
40
- expect(measureText('', { letterSpacing: 0 }, shaper)).toBe(0);
41
- expect(measureText('.', { letterSpacing: 0 }, shaper)).toBe(PERIOD_WIDTH);
42
- expect(measureText('..', { letterSpacing: 0 }, shaper)).toBeCloseTo(
43
- PERIOD_WIDTH * 2,
44
- );
45
- expect(measureText('..', { letterSpacing: 5 }, shaper)).toBeCloseTo(
46
- PERIOD_WIDTH * 2 + 5,
47
- );
48
- });
49
- });
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 { expect, describe, it } from 'vitest';
21
+ import { measureText } from './measureText.js';
22
+ import sdfData from 'test/mockdata/Ubuntu-Bold.msdf.json';
23
+ import {
24
+ SdfFontShaper,
25
+ type SdfFontData,
26
+ } from '../../../font-face-types/SdfTrFontFace/internal/SdfFontShaper.js';
27
+
28
+ const glyphMap = new Map<number, SdfFontData['chars'][0]>();
29
+ sdfData.chars.forEach((glyph) => {
30
+ glyphMap.set(glyph.id, glyph);
31
+ });
32
+
33
+ describe('measureText', () => {
34
+ it('should measure text width', () => {
35
+ const PERIOD_WIDTH = 10.332;
36
+ const shaper = new SdfFontShaper(
37
+ sdfData as unknown as SdfFontData,
38
+ glyphMap,
39
+ );
40
+ expect(measureText('', { letterSpacing: 0 }, shaper)).toBe(0);
41
+ expect(measureText('.', { letterSpacing: 0 }, shaper)).toBe(PERIOD_WIDTH);
42
+ expect(measureText('..', { letterSpacing: 0 }, shaper)).toBeCloseTo(
43
+ PERIOD_WIDTH * 2,
44
+ );
45
+ expect(measureText('..', { letterSpacing: 5 }, shaper)).toBeCloseTo(
46
+ PERIOD_WIDTH * 2 + 5,
47
+ );
48
+ });
49
+ });
@@ -1,52 +1,52 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
- import type {
21
- FontShaper,
22
- FontShaperProps,
23
- } from '../../../font-face-types/SdfTrFontFace/internal/FontShaper.js';
24
- import { PeekableIterator } from './PeekableGenerator.js';
25
- import { getUnicodeCodepoints } from './getUnicodeCodepoints.js';
26
-
27
- /**
28
- * Measures a single-line of text width ignoring any unmapped glyphs including line breaks
29
- *
30
- * @param text
31
- * @param shaperProps
32
- * @param shaper
33
- * @returns
34
- */
35
- export function measureText(
36
- text: string,
37
- shaperProps: FontShaperProps,
38
- shaper: FontShaper,
39
- ): number {
40
- const glyphs = shaper.shapeText(
41
- shaperProps,
42
- new PeekableIterator(getUnicodeCodepoints(text, 0), 0),
43
- );
44
- let width = 0;
45
- for (const glyph of glyphs) {
46
- if (glyph.mapped && glyph.codepoint !== 8203) {
47
- // Skip ZWSP (\u200B)
48
- width += glyph.xAdvance;
49
- }
50
- }
51
- return width;
52
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ import type {
21
+ FontShaper,
22
+ FontShaperProps,
23
+ } from '../../../font-face-types/SdfTrFontFace/internal/FontShaper.js';
24
+ import { PeekableIterator } from './PeekableGenerator.js';
25
+ import { getUnicodeCodepoints } from './getUnicodeCodepoints.js';
26
+
27
+ /**
28
+ * Measures a single-line of text width ignoring any unmapped glyphs including line breaks
29
+ *
30
+ * @param text
31
+ * @param shaperProps
32
+ * @param shaper
33
+ * @returns
34
+ */
35
+ export function measureText(
36
+ text: string,
37
+ shaperProps: FontShaperProps,
38
+ shaper: FontShaper,
39
+ ): number {
40
+ const glyphs = shaper.shapeText(
41
+ shaperProps,
42
+ new PeekableIterator(getUnicodeCodepoints(text, 0), 0),
43
+ );
44
+ let width = 0;
45
+ for (const glyph of glyphs) {
46
+ if (glyph.mapped && glyph.codepoint !== 8203) {
47
+ // Skip ZWSP (\u200B)
48
+ width += glyph.xAdvance;
49
+ }
50
+ }
51
+ return width;
52
+ }
@@ -1,205 +1,205 @@
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 { expect, describe, it } from 'vitest';
21
- import { setRenderWindow, type SdfRenderWindow } from './setRenderWindow.js';
22
-
23
- function makeRenderWindow(): SdfRenderWindow {
24
- return {
25
- screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
26
- sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
27
- firstLineIdx: 0,
28
- numLines: 0,
29
- valid: false,
30
- };
31
- }
32
-
33
- describe('setRenderWindow', () => {
34
- it('should return a empty window when visibleWindow is empty', () => {
35
- const rw = makeRenderWindow();
36
- setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 0, y2: 0 }, 1);
37
- expect(rw).toEqual({
38
- screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
39
- sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
40
- firstLineIdx: 0,
41
- numLines: 0,
42
- valid: true,
43
- });
44
-
45
- setRenderWindow(
46
- rw,
47
- 0,
48
- 0,
49
- 0,
50
- 20,
51
- 0,
52
- { x1: 100, y1: 100, x2: 100, y2: 100 },
53
- 2,
54
- );
55
- expect(rw).toEqual({
56
- screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
57
- sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
58
- firstLineIdx: 0,
59
- numLines: 0,
60
- valid: true,
61
- });
62
-
63
- setRenderWindow(
64
- rw,
65
- 100,
66
- 200,
67
- 300,
68
- 10,
69
- 30,
70
- { x1: 0, y1: 0, x2: 0, y2: 0 },
71
- 1,
72
- );
73
- expect(rw).toEqual({
74
- screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
75
- sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
76
- firstLineIdx: 0,
77
- numLines: 0,
78
- valid: true,
79
- });
80
- setRenderWindow(
81
- rw,
82
- 400,
83
- 500,
84
- 100,
85
- 20,
86
- 40,
87
- {
88
- x1: 100,
89
- y1: 100,
90
- x2: 100,
91
- y2: 100,
92
- },
93
- 1,
94
- ),
95
- expect(rw).toEqual({
96
- screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
97
- sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
98
- firstLineIdx: 0,
99
- numLines: 0,
100
- valid: true,
101
- });
102
- });
103
-
104
- it('should return a window with no margin around the visible area if lineHeight and/or bufferMargin set are zero', () => {
105
- const rw = makeRenderWindow();
106
-
107
- setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 100, y2: 100 }, 1),
108
- expect(rw).toEqual({
109
- screen: { x1: 0, y1: 0, x2: 100, y2: 100 },
110
- sdf: { x1: 0, y1: 0, x2: 100, y2: 100 },
111
- firstLineIdx: 0,
112
- numLines: 10,
113
- valid: true,
114
- });
115
-
116
- setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 200, y2: 205 }, 2);
117
- expect(rw).toEqual({
118
- screen: { x1: 0, y1: 0, x2: 200, y2: 210 },
119
- sdf: { x1: 0, y1: 0, x2: 100, y2: 105 },
120
- firstLineIdx: 0,
121
- numLines: 21,
122
- valid: true,
123
- });
124
- });
125
-
126
- it('should return a window with a margin around the visible area (if boundsMargin set)', () => {
127
- const rw = makeRenderWindow();
128
-
129
- setRenderWindow(
130
- rw,
131
- 0,
132
- 0,
133
- 0,
134
- 10,
135
- 100,
136
- { x1: 0, y1: 0, x2: 100, y2: 100 },
137
- 1,
138
- ),
139
- expect(rw).toEqual({
140
- screen: { x1: 0, y1: -100, x2: 100, y2: 200 },
141
- sdf: { x1: 0, y1: -100, x2: 100, y2: 200 },
142
- firstLineIdx: -10,
143
- numLines: 30,
144
- valid: true,
145
- });
146
-
147
- setRenderWindow(
148
- rw,
149
- 0,
150
- 0,
151
- 0,
152
- 10,
153
- 200,
154
- { x1: 0, y1: 0, x2: 200, y2: 200 },
155
- 1,
156
- );
157
- expect(rw).toEqual({
158
- screen: { x1: 0, y1: -200, x2: 200, y2: 400 },
159
- sdf: { x1: 0, y1: -200, x2: 200, y2: 400 },
160
- firstLineIdx: -20,
161
- numLines: 60,
162
- valid: true,
163
- });
164
- });
165
-
166
- it('should return a window scrolled to scrollY when set', () => {
167
- const rw = makeRenderWindow();
168
-
169
- setRenderWindow(
170
- rw,
171
- 0,
172
- 0,
173
- 100,
174
- 10,
175
- 100,
176
- { x1: 0, y1: 0, x2: 100, y2: 100 },
177
- 1,
178
- ),
179
- expect(rw).toEqual({
180
- screen: { x1: 0, y1: 0, x2: 100, y2: 300 },
181
- sdf: { x1: 0, y1: 0, x2: 100, y2: 300 },
182
- firstLineIdx: 0,
183
- numLines: 30,
184
- valid: true,
185
- });
186
-
187
- setRenderWindow(
188
- rw,
189
- 0,
190
- 0,
191
- 105,
192
- 10,
193
- 100,
194
- { x1: 0, y1: 0, x2: 100, y2: 100 },
195
- 1,
196
- ),
197
- expect(rw).toEqual({
198
- screen: { x1: 0, y1: 0, x2: 100, y2: 310 },
199
- sdf: { x1: 0, y1: 0, x2: 100, y2: 310 },
200
- firstLineIdx: 0,
201
- numLines: 31,
202
- valid: true,
203
- });
204
- });
205
- });
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 { expect, describe, it } from 'vitest';
21
+ import { setRenderWindow, type SdfRenderWindow } from './setRenderWindow.js';
22
+
23
+ function makeRenderWindow(): SdfRenderWindow {
24
+ return {
25
+ screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
26
+ sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
27
+ firstLineIdx: 0,
28
+ numLines: 0,
29
+ valid: false,
30
+ };
31
+ }
32
+
33
+ describe('setRenderWindow', () => {
34
+ it('should return a empty window when visibleWindow is empty', () => {
35
+ const rw = makeRenderWindow();
36
+ setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 0, y2: 0 }, 1);
37
+ expect(rw).toEqual({
38
+ screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
39
+ sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
40
+ firstLineIdx: 0,
41
+ numLines: 0,
42
+ valid: true,
43
+ });
44
+
45
+ setRenderWindow(
46
+ rw,
47
+ 0,
48
+ 0,
49
+ 0,
50
+ 20,
51
+ 0,
52
+ { x1: 100, y1: 100, x2: 100, y2: 100 },
53
+ 2,
54
+ );
55
+ expect(rw).toEqual({
56
+ screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
57
+ sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
58
+ firstLineIdx: 0,
59
+ numLines: 0,
60
+ valid: true,
61
+ });
62
+
63
+ setRenderWindow(
64
+ rw,
65
+ 100,
66
+ 200,
67
+ 300,
68
+ 10,
69
+ 30,
70
+ { x1: 0, y1: 0, x2: 0, y2: 0 },
71
+ 1,
72
+ );
73
+ expect(rw).toEqual({
74
+ screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
75
+ sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
76
+ firstLineIdx: 0,
77
+ numLines: 0,
78
+ valid: true,
79
+ });
80
+ setRenderWindow(
81
+ rw,
82
+ 400,
83
+ 500,
84
+ 100,
85
+ 20,
86
+ 40,
87
+ {
88
+ x1: 100,
89
+ y1: 100,
90
+ x2: 100,
91
+ y2: 100,
92
+ },
93
+ 1,
94
+ ),
95
+ expect(rw).toEqual({
96
+ screen: { x1: 0, y1: 0, x2: 0, y2: 0 },
97
+ sdf: { x1: 0, y1: 0, x2: 0, y2: 0 },
98
+ firstLineIdx: 0,
99
+ numLines: 0,
100
+ valid: true,
101
+ });
102
+ });
103
+
104
+ it('should return a window with no margin around the visible area if lineHeight and/or bufferMargin set are zero', () => {
105
+ const rw = makeRenderWindow();
106
+
107
+ setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 100, y2: 100 }, 1),
108
+ expect(rw).toEqual({
109
+ screen: { x1: 0, y1: 0, x2: 100, y2: 100 },
110
+ sdf: { x1: 0, y1: 0, x2: 100, y2: 100 },
111
+ firstLineIdx: 0,
112
+ numLines: 10,
113
+ valid: true,
114
+ });
115
+
116
+ setRenderWindow(rw, 0, 0, 0, 10, 0, { x1: 0, y1: 0, x2: 200, y2: 205 }, 2);
117
+ expect(rw).toEqual({
118
+ screen: { x1: 0, y1: 0, x2: 200, y2: 210 },
119
+ sdf: { x1: 0, y1: 0, x2: 100, y2: 105 },
120
+ firstLineIdx: 0,
121
+ numLines: 21,
122
+ valid: true,
123
+ });
124
+ });
125
+
126
+ it('should return a window with a margin around the visible area (if boundsMargin set)', () => {
127
+ const rw = makeRenderWindow();
128
+
129
+ setRenderWindow(
130
+ rw,
131
+ 0,
132
+ 0,
133
+ 0,
134
+ 10,
135
+ 100,
136
+ { x1: 0, y1: 0, x2: 100, y2: 100 },
137
+ 1,
138
+ ),
139
+ expect(rw).toEqual({
140
+ screen: { x1: 0, y1: -100, x2: 100, y2: 200 },
141
+ sdf: { x1: 0, y1: -100, x2: 100, y2: 200 },
142
+ firstLineIdx: -10,
143
+ numLines: 30,
144
+ valid: true,
145
+ });
146
+
147
+ setRenderWindow(
148
+ rw,
149
+ 0,
150
+ 0,
151
+ 0,
152
+ 10,
153
+ 200,
154
+ { x1: 0, y1: 0, x2: 200, y2: 200 },
155
+ 1,
156
+ );
157
+ expect(rw).toEqual({
158
+ screen: { x1: 0, y1: -200, x2: 200, y2: 400 },
159
+ sdf: { x1: 0, y1: -200, x2: 200, y2: 400 },
160
+ firstLineIdx: -20,
161
+ numLines: 60,
162
+ valid: true,
163
+ });
164
+ });
165
+
166
+ it('should return a window scrolled to scrollY when set', () => {
167
+ const rw = makeRenderWindow();
168
+
169
+ setRenderWindow(
170
+ rw,
171
+ 0,
172
+ 0,
173
+ 100,
174
+ 10,
175
+ 100,
176
+ { x1: 0, y1: 0, x2: 100, y2: 100 },
177
+ 1,
178
+ ),
179
+ expect(rw).toEqual({
180
+ screen: { x1: 0, y1: 0, x2: 100, y2: 300 },
181
+ sdf: { x1: 0, y1: 0, x2: 100, y2: 300 },
182
+ firstLineIdx: 0,
183
+ numLines: 30,
184
+ valid: true,
185
+ });
186
+
187
+ setRenderWindow(
188
+ rw,
189
+ 0,
190
+ 0,
191
+ 105,
192
+ 10,
193
+ 100,
194
+ { x1: 0, y1: 0, x2: 100, y2: 100 },
195
+ 1,
196
+ ),
197
+ expect(rw).toEqual({
198
+ screen: { x1: 0, y1: 0, x2: 100, y2: 310 },
199
+ sdf: { x1: 0, y1: 0, x2: 100, y2: 310 },
200
+ firstLineIdx: 0,
201
+ numLines: 31,
202
+ valid: true,
203
+ });
204
+ });
205
+ });