@lightningjs/renderer 2.10.0 → 2.11.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 (327) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/core-api.d.ts +74 -0
  5. package/dist/exports/core-api.js +96 -0
  6. package/dist/exports/core-api.js.map +1 -0
  7. package/dist/exports/main-api.d.ts +30 -0
  8. package/dist/exports/main-api.js +45 -0
  9. package/dist/exports/main-api.js.map +1 -0
  10. package/dist/src/core/CoreExtension.d.ts +12 -0
  11. package/dist/src/core/CoreExtension.js +29 -0
  12. package/dist/src/core/CoreExtension.js.map +1 -0
  13. package/dist/src/core/CoreStuff.d.ts +1 -0
  14. package/dist/src/core/CoreStuff.js +138 -0
  15. package/dist/src/core/CoreStuff.js.map +1 -0
  16. package/dist/src/core/CoreTextureManager.d.ts +4 -1
  17. package/dist/src/core/CoreTextureManager.js +14 -3
  18. package/dist/src/core/CoreTextureManager.js.map +1 -1
  19. package/dist/src/core/LngNode.d.ts +736 -0
  20. package/dist/src/core/LngNode.js +1174 -0
  21. package/dist/src/core/LngNode.js.map +1 -0
  22. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  23. package/dist/src/core/Matrix2DContext.js +45 -0
  24. package/dist/src/core/Matrix2DContext.js.map +1 -0
  25. package/dist/src/core/ShaderNode.d.ts +10 -0
  26. package/dist/src/core/ShaderNode.js +30 -0
  27. package/dist/src/core/ShaderNode.js.map +1 -0
  28. package/dist/src/core/Stage.js +1 -1
  29. package/dist/src/core/Stage.js.map +1 -1
  30. package/dist/src/core/TextNode.d.ts +103 -0
  31. package/dist/src/core/TextNode.js +331 -0
  32. package/dist/src/core/TextNode.js.map +1 -0
  33. package/dist/src/core/TextureMemoryManager.d.ts +30 -0
  34. package/dist/src/core/TextureMemoryManager.js +58 -38
  35. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  36. package/dist/src/core/lib/Coords.d.ts +14 -0
  37. package/dist/src/core/lib/Coords.js +55 -0
  38. package/dist/src/core/lib/Coords.js.map +1 -0
  39. package/dist/src/core/lib/glm/common.d.ts +162 -0
  40. package/dist/src/core/lib/glm/common.js +81 -0
  41. package/dist/src/core/lib/glm/common.js.map +1 -0
  42. package/dist/src/core/lib/glm/index.d.ts +11 -0
  43. package/dist/src/core/lib/glm/index.js +30 -0
  44. package/dist/src/core/lib/glm/index.js.map +1 -0
  45. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  46. package/dist/src/core/lib/glm/mat2.js +396 -0
  47. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  48. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  49. package/dist/src/core/lib/glm/mat2d.js +442 -0
  50. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  51. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  52. package/dist/src/core/lib/glm/mat3.js +680 -0
  53. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  54. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  55. package/dist/src/core/lib/glm/mat4.js +1802 -0
  56. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  57. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  58. package/dist/src/core/lib/glm/quat.js +693 -0
  59. package/dist/src/core/lib/glm/quat.js.map +1 -0
  60. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  61. package/dist/src/core/lib/glm/quat2.js +754 -0
  62. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  63. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  64. package/dist/src/core/lib/glm/vec2.js +569 -0
  65. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  66. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  67. package/dist/src/core/lib/glm/vec3.js +720 -0
  68. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  69. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  70. package/dist/src/core/lib/glm/vec4.js +608 -0
  71. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  72. package/dist/src/core/lib/textureSvg.js +1 -1
  73. package/dist/src/core/lib/textureSvg.js.map +1 -1
  74. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  75. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  76. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  77. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +4 -2
  78. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  79. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +4 -4
  80. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +9 -12
  82. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  83. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  84. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  85. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  86. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  87. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  88. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  89. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  90. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  91. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  92. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  93. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  94. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  98. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  99. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  100. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  101. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  102. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  103. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  104. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  107. package/dist/src/core/scene/Scene.d.ts +59 -0
  108. package/dist/src/core/scene/Scene.js +106 -0
  109. package/dist/src/core/scene/Scene.js.map +1 -0
  110. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  111. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  112. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  113. package/dist/src/core/textures/ColorTexture.js +1 -1
  114. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  115. package/dist/src/core/textures/ImageTexture.js +3 -3
  116. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  117. package/dist/src/core/textures/NoiseTexture.js +1 -1
  118. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  119. package/dist/src/core/textures/RenderTexture.js +1 -1
  120. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  121. package/dist/src/core/textures/SubTexture.d.ts +4 -0
  122. package/dist/src/core/textures/SubTexture.js +54 -16
  123. package/dist/src/core/textures/SubTexture.js.map +1 -1
  124. package/dist/src/core/textures/Texture.d.ts +2 -34
  125. package/dist/src/core/textures/Texture.js +13 -69
  126. package/dist/src/core/textures/Texture.js.map +1 -1
  127. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  128. package/dist/src/main-api/ICoreDriver.js +20 -0
  129. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  130. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  131. package/dist/src/main-api/IRenderDriver.js +20 -0
  132. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  133. package/dist/src/main-api/IShaderController.d.ts +14 -0
  134. package/dist/src/main-api/IShaderController.js +30 -0
  135. package/dist/src/main-api/IShaderController.js.map +1 -0
  136. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  137. package/dist/src/main-api/IShaderNode.js +19 -0
  138. package/dist/src/main-api/IShaderNode.js.map +1 -0
  139. package/dist/src/main-api/Renderer.js +1 -0
  140. package/dist/src/main-api/Renderer.js.map +1 -1
  141. package/dist/src/main-api/RendererMain.d.ts +375 -0
  142. package/dist/src/main-api/RendererMain.js +365 -0
  143. package/dist/src/main-api/RendererMain.js.map +1 -0
  144. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  145. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  146. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  147. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  148. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  149. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  150. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  151. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  152. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  153. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  154. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  155. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  156. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  157. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  158. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  159. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  160. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  161. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  162. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  163. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  164. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  165. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  166. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  167. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  168. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  169. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  170. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  171. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  172. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  173. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  174. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  175. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  176. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  177. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  178. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  179. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  180. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  181. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  182. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  183. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  184. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  185. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  186. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  187. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  188. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  189. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  190. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  191. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  192. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  193. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  194. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  195. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  196. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  197. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  198. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  199. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  200. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  201. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  202. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  203. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  204. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  205. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  206. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  207. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  208. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  209. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  210. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  211. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  212. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  213. package/dist/src/render-drivers/utils.d.ts +12 -0
  214. package/dist/src/render-drivers/utils.js +69 -0
  215. package/dist/src/render-drivers/utils.js.map +1 -0
  216. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  217. package/exports/canvas.ts +39 -39
  218. package/exports/index.ts +89 -89
  219. package/exports/inspector.ts +24 -24
  220. package/exports/utils.ts +44 -44
  221. package/exports/webgl.ts +38 -38
  222. package/package.json +2 -1
  223. package/scripts/please-use-pnpm.js +13 -13
  224. package/src/common/CommonTypes.ts +139 -139
  225. package/src/common/EventEmitter.ts +77 -77
  226. package/src/common/IAnimationController.ts +92 -92
  227. package/src/common/IEventEmitter.ts +28 -28
  228. package/src/core/CoreNode.test.ts +199 -199
  229. package/src/core/CoreNode.ts +2335 -2335
  230. package/src/core/CoreShaderManager.ts +292 -292
  231. package/src/core/CoreTextNode.ts +455 -455
  232. package/src/core/CoreTextureManager.ts +561 -545
  233. package/src/core/Stage.ts +700 -700
  234. package/src/core/TextureMemoryManager.ts +292 -277
  235. package/src/core/animations/AnimationManager.ts +38 -38
  236. package/src/core/animations/CoreAnimation.ts +340 -340
  237. package/src/core/animations/CoreAnimationController.ts +157 -157
  238. package/src/core/lib/ContextSpy.ts +41 -41
  239. package/src/core/lib/ImageWorker.ts +270 -270
  240. package/src/core/lib/Matrix3d.ts +244 -244
  241. package/src/core/lib/RenderCoords.ts +86 -86
  242. package/src/core/lib/WebGlContextWrapper.ts +1322 -1322
  243. package/src/core/lib/textureCompression.ts +152 -152
  244. package/src/core/lib/textureSvg.ts +78 -78
  245. package/src/core/lib/utils.ts +310 -310
  246. package/src/core/platform.ts +61 -61
  247. package/src/core/renderers/CoreContextTexture.ts +43 -43
  248. package/src/core/renderers/CoreRenderOp.ts +22 -22
  249. package/src/core/renderers/CoreRenderer.ts +114 -114
  250. package/src/core/renderers/CoreShader.ts +41 -41
  251. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +371 -369
  252. package/src/core/renderers/canvas/CanvasCoreTexture.ts +150 -150
  253. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +231 -231
  254. package/src/core/renderers/canvas/internal/ColorUtils.ts +69 -69
  255. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +48 -48
  256. package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +79 -79
  257. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +50 -50
  258. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +295 -298
  259. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +125 -125
  260. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +805 -805
  261. package/src/core/renderers/webgl/WebGlCoreShader.ts +362 -362
  262. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  263. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  264. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -143
  265. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  266. package/src/core/renderers/webgl/shaders/DefaultShader.ts +93 -93
  267. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  268. package/src/core/renderers/webgl/shaders/DynamicShader.ts +580 -580
  269. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +167 -167
  270. package/src/core/renderers/webgl/shaders/SdfShader.ts +204 -204
  271. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  272. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +87 -87
  273. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  274. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  275. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  276. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +159 -159
  277. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +127 -127
  278. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +148 -148
  279. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  280. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +157 -157
  281. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +171 -171
  282. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +168 -168
  283. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +187 -187
  284. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +110 -110
  285. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +196 -196
  286. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  287. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  288. package/src/core/text-rendering/TrFontManager.ts +183 -183
  289. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  290. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  291. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  292. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  293. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  294. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  295. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  296. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +808 -808
  297. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +853 -853
  298. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  299. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  300. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  301. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  302. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  303. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  304. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  305. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  306. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  307. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  308. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  309. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  310. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  311. package/src/core/text-rendering/renderers/TextRenderer.ts +557 -557
  312. package/src/core/textures/ColorTexture.ts +102 -102
  313. package/src/core/textures/ImageTexture.ts +379 -379
  314. package/src/core/textures/NoiseTexture.ts +104 -104
  315. package/src/core/textures/RenderTexture.ts +85 -85
  316. package/src/core/textures/SubTexture.ts +225 -179
  317. package/src/core/textures/Texture.ts +347 -435
  318. package/src/core/utils.ts +227 -227
  319. package/src/env.d.ts +7 -7
  320. package/src/main-api/DynamicShaderController.ts +104 -104
  321. package/src/main-api/INode.ts +101 -101
  322. package/src/main-api/Inspector.ts +505 -505
  323. package/src/main-api/Renderer.ts +698 -694
  324. package/src/main-api/ShaderController.ts +80 -80
  325. package/src/main-api/utils.ts +45 -45
  326. package/src/utils.ts +248 -248
  327. package/COPYING +0 -1
@@ -0,0 +1,331 @@
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
+ import { LngNode, UpdateType } from './LngNode.js';
20
+ import { assertTruthy } from '../utils.js';
21
+ import { Matrix3d } from './lib/Matrix3d.js';
22
+ /**
23
+ * An LngNode in the Renderer scene graph that renders text.
24
+ *
25
+ * @remarks
26
+ * A Text Node is the second graphical building block of the Renderer scene
27
+ * graph. It renders text using a specific text renderer that is automatically
28
+ * chosen based on the font requested and what type of fonts are installed
29
+ * into an app.
30
+ *
31
+ * The text renderer can be overridden by setting the `textRendererOverride`
32
+ *
33
+ * The `texture` and `shader` properties are managed by loaded text renderer and
34
+ * should not be set directly.
35
+ *
36
+ * For non-text rendering, see {@link LngNode}.
37
+ */
38
+ export class TextNode extends LngNode {
39
+ textRenderer;
40
+ trState;
41
+ _textRendererOverride = null;
42
+ constructor(stage, props) {
43
+ super(stage, props);
44
+ this._textRendererOverride = props.textRendererOverride;
45
+ const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState({
46
+ x: this.absX,
47
+ y: this.absY,
48
+ width: props.width,
49
+ height: props.height,
50
+ textAlign: props.textAlign,
51
+ color: props.color,
52
+ zIndex: props.zIndex,
53
+ contain: props.contain,
54
+ scrollable: props.scrollable,
55
+ scrollY: props.scrollY,
56
+ offsetY: props.offsetY,
57
+ letterSpacing: props.letterSpacing,
58
+ debug: props.debug,
59
+ fontFamily: props.fontFamily,
60
+ fontSize: props.fontSize,
61
+ fontStretch: props.fontStretch,
62
+ fontStyle: props.fontStyle,
63
+ fontWeight: props.fontWeight,
64
+ text: props.text,
65
+ lineHeight: props.lineHeight,
66
+ maxLines: props.maxLines,
67
+ textBaseline: props.textBaseline,
68
+ verticalAlign: props.verticalAlign,
69
+ overflowSuffix: props.overflowSuffix,
70
+ });
71
+ this.textRenderer = resolvedTextRenderer;
72
+ this.trState = textRendererState;
73
+ }
74
+ onTextLoaded = () => {
75
+ const { contain } = this;
76
+ const setWidth = this.trState.props.width;
77
+ const setHeight = this.trState.props.height;
78
+ const calcWidth = this.trState.textW || 0;
79
+ const calcHeight = this.trState.textH || 0;
80
+ if (contain === 'both') {
81
+ this.props.width = setWidth;
82
+ this.props.height = setHeight;
83
+ }
84
+ else if (contain === 'width') {
85
+ this.props.width = setWidth;
86
+ this.props.height = calcHeight;
87
+ }
88
+ else if (contain === 'none') {
89
+ this.props.width = calcWidth;
90
+ this.props.height = calcHeight;
91
+ }
92
+ this.updateLocalTransform();
93
+ // Incase the RAF loop has been stopped already before text was loaded,
94
+ // we request a render so it can be drawn.
95
+ this.stage.requestRender();
96
+ this.emit('loaded', {
97
+ type: 'text',
98
+ dimensions: {
99
+ width: this.trState.textW || 0,
100
+ height: this.trState.textH || 0,
101
+ },
102
+ });
103
+ };
104
+ onTextFailed = (target, error) => {
105
+ this.emit('failed', {
106
+ type: 'text',
107
+ error,
108
+ });
109
+ };
110
+ get width() {
111
+ return this.props.width;
112
+ }
113
+ set width(value) {
114
+ this.props.width = value;
115
+ this.textRenderer.set.width(this.trState, value);
116
+ // If not containing, we must update the local transform to account for the
117
+ // new width
118
+ if (this.contain === 'none') {
119
+ this.setUpdateType(UpdateType.Local);
120
+ }
121
+ }
122
+ get height() {
123
+ return this.props.height;
124
+ }
125
+ set height(value) {
126
+ this.props.height = value;
127
+ this.textRenderer.set.height(this.trState, value);
128
+ // If not containing in the horizontal direction, we must update the local
129
+ // transform to account for the new height
130
+ if (this.contain !== 'both') {
131
+ this.setUpdateType(UpdateType.Local);
132
+ }
133
+ }
134
+ get color() {
135
+ return this.trState.props.color;
136
+ }
137
+ set color(value) {
138
+ this.textRenderer.set.color(this.trState, value);
139
+ }
140
+ get text() {
141
+ return this.trState.props.text;
142
+ }
143
+ set text(value) {
144
+ this.textRenderer.set.text(this.trState, value);
145
+ }
146
+ get textRendererOverride() {
147
+ return this._textRendererOverride;
148
+ }
149
+ set textRendererOverride(value) {
150
+ this._textRendererOverride = value;
151
+ this.textRenderer.destroyState(this.trState);
152
+ const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);
153
+ this.textRenderer = resolvedTextRenderer;
154
+ this.trState = textRendererState;
155
+ }
156
+ get fontSize() {
157
+ return this.trState.props.fontSize;
158
+ }
159
+ set fontSize(value) {
160
+ this.textRenderer.set.fontSize(this.trState, value);
161
+ }
162
+ get fontFamily() {
163
+ return this.trState.props.fontFamily;
164
+ }
165
+ set fontFamily(value) {
166
+ this.textRenderer.set.fontFamily(this.trState, value);
167
+ }
168
+ get fontStretch() {
169
+ return this.trState.props.fontStretch;
170
+ }
171
+ set fontStretch(value) {
172
+ this.textRenderer.set.fontStretch(this.trState, value);
173
+ }
174
+ get fontStyle() {
175
+ return this.trState.props.fontStyle;
176
+ }
177
+ set fontStyle(value) {
178
+ this.textRenderer.set.fontStyle(this.trState, value);
179
+ }
180
+ get fontWeight() {
181
+ return this.trState.props.fontWeight;
182
+ }
183
+ set fontWeight(value) {
184
+ this.textRenderer.set.fontWeight(this.trState, value);
185
+ }
186
+ get textAlign() {
187
+ return this.trState.props.textAlign;
188
+ }
189
+ set textAlign(value) {
190
+ this.textRenderer.set.textAlign(this.trState, value);
191
+ }
192
+ get contain() {
193
+ return this.trState.props.contain;
194
+ }
195
+ set contain(value) {
196
+ this.textRenderer.set.contain(this.trState, value);
197
+ }
198
+ get scrollable() {
199
+ return this.trState.props.scrollable;
200
+ }
201
+ set scrollable(value) {
202
+ this.textRenderer.set.scrollable(this.trState, value);
203
+ }
204
+ get scrollY() {
205
+ return this.trState.props.scrollY;
206
+ }
207
+ set scrollY(value) {
208
+ this.textRenderer.set.scrollY(this.trState, value);
209
+ }
210
+ get offsetY() {
211
+ return this.trState.props.offsetY;
212
+ }
213
+ set offsetY(value) {
214
+ this.textRenderer.set.offsetY(this.trState, value);
215
+ }
216
+ get letterSpacing() {
217
+ return this.trState.props.letterSpacing;
218
+ }
219
+ set letterSpacing(value) {
220
+ this.textRenderer.set.letterSpacing(this.trState, value);
221
+ }
222
+ get lineHeight() {
223
+ return this.trState.props.lineHeight;
224
+ }
225
+ set lineHeight(value) {
226
+ if (this.textRenderer.set.lineHeight) {
227
+ this.textRenderer.set.lineHeight(this.trState, value);
228
+ }
229
+ }
230
+ get maxLines() {
231
+ return this.trState.props.maxLines;
232
+ }
233
+ set maxLines(value) {
234
+ if (this.textRenderer.set.maxLines) {
235
+ this.textRenderer.set.maxLines(this.trState, value);
236
+ }
237
+ }
238
+ get textBaseline() {
239
+ return this.trState.props.textBaseline;
240
+ }
241
+ set textBaseline(value) {
242
+ if (this.textRenderer.set.textBaseline) {
243
+ this.textRenderer.set.textBaseline(this.trState, value);
244
+ }
245
+ }
246
+ get verticalAlign() {
247
+ return this.trState.props.verticalAlign;
248
+ }
249
+ set verticalAlign(value) {
250
+ if (this.textRenderer.set.verticalAlign) {
251
+ this.textRenderer.set.verticalAlign(this.trState, value);
252
+ }
253
+ }
254
+ get overflowSuffix() {
255
+ return this.trState.props.overflowSuffix;
256
+ }
257
+ set overflowSuffix(value) {
258
+ if (this.textRenderer.set.overflowSuffix) {
259
+ this.textRenderer.set.overflowSuffix(this.trState, value);
260
+ }
261
+ }
262
+ get debug() {
263
+ return this.trState.props.debug;
264
+ }
265
+ set debug(value) {
266
+ this.textRenderer.set.debug(this.trState, value);
267
+ }
268
+ update(delta, parentClippingRect) {
269
+ super.update(delta, parentClippingRect);
270
+ assertTruthy(this.globalTransform);
271
+ // globalTransform is updated in super.update(delta)
272
+ this.textRenderer.set.x(this.trState, this.globalTransform.tx);
273
+ this.textRenderer.set.y(this.trState, this.globalTransform.ty);
274
+ }
275
+ checkRenderProps() {
276
+ if (this.trState.props.text !== '') {
277
+ return true;
278
+ }
279
+ return super.checkRenderProps();
280
+ }
281
+ onChangeIsRenderable(isRenderable) {
282
+ super.onChangeIsRenderable(isRenderable);
283
+ this.textRenderer.setIsRenderable(this.trState, isRenderable);
284
+ }
285
+ renderQuads(renderer) {
286
+ assertTruthy(this.globalTransform);
287
+ // Prevent quad rendering if parent has a render texture
288
+ // and this node is not the render texture
289
+ if (this.parentHasRenderTexture) {
290
+ if (!renderer.renderToTextureActive) {
291
+ return;
292
+ }
293
+ // Prevent quad rendering if parent render texture is not the active render texture
294
+ if (this.parentRenderTexture !== renderer.activeRttNode) {
295
+ return;
296
+ }
297
+ }
298
+ if (this.parentHasRenderTexture && this.props.parent?.rtt) {
299
+ this.globalTransform = Matrix3d.identity();
300
+ if (this.localTransform) {
301
+ this.globalTransform.multiply(this.localTransform);
302
+ }
303
+ }
304
+ assertTruthy(this.globalTransform);
305
+ this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha, this.parentHasRenderTexture, this.framebufferDimensions);
306
+ }
307
+ /**
308
+ * Destroy the node and cleanup all resources
309
+ */
310
+ destroy() {
311
+ super.destroy();
312
+ this.textRenderer.destroyState(this.trState);
313
+ }
314
+ /**
315
+ * Resolve a text renderer and a new state based on the current text renderer props provided
316
+ * @param props
317
+ * @returns
318
+ */
319
+ resolveTextRendererAndState(props) {
320
+ const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);
321
+ const textRendererState = resolvedTextRenderer.createState(props);
322
+ textRendererState.emitter.on('loaded', this.onTextLoaded);
323
+ textRendererState.emitter.on('failed', this.onTextFailed);
324
+ resolvedTextRenderer.scheduleUpdateState(textRendererState);
325
+ return {
326
+ resolvedTextRenderer,
327
+ textRendererState,
328
+ };
329
+ }
330
+ }
331
+ //# sourceMappingURL=TextNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextNode.js","sourceRoot":"","sources":["../../../src/core/TextNode.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,16 @@ export interface TextureMemoryManagerSettings {
44
44
  * @defaultValue `false`
45
45
  */
46
46
  debugLogging: boolean;
47
+ /**
48
+ * Baseline memory allocation for the Texture Memory Manager
49
+ *
50
+ * @remarks
51
+ * Baseline texture memory is an allocation of memory by simply having a 1080p WebGL context.
52
+ * This will be used on top of the memory used by textures to determine when to trigger a cleanup.
53
+ *
54
+ * @defaultValue `25e6` (25 MB)
55
+ */
56
+ baselineMemoryAllocation: number;
47
57
  }
48
58
  export interface MemoryInfo {
49
59
  criticalThreshold: number;
@@ -52,6 +62,7 @@ export interface MemoryInfo {
52
62
  memUsed: number;
53
63
  renderableTexturesLoaded: number;
54
64
  loadedTextures: number;
65
+ baselineMemoryAllocation: number;
55
66
  }
56
67
  /**
57
68
  * LRU (Least Recently Used) style memory manager for textures
@@ -72,6 +83,7 @@ export declare class TextureMemoryManager {
72
83
  private stage;
73
84
  private memUsed;
74
85
  private loadedTextures;
86
+ private orphanedTextures;
75
87
  private criticalThreshold;
76
88
  private targetThreshold;
77
89
  private cleanupInterval;
@@ -88,6 +100,24 @@ export declare class TextureMemoryManager {
88
100
  */
89
101
  frameTime: number;
90
102
  constructor(stage: Stage, settings: TextureMemoryManagerSettings);
103
+ /**
104
+ * Add a texture to the orphaned textures list
105
+ *
106
+ * @param texture - The texture to add to the orphaned textures list
107
+ */
108
+ addToOrphanedTextures(texture: Texture): void;
109
+ /**
110
+ * Remove a texture from the orphaned textures list
111
+ *
112
+ * @param texture - The texture to remove from the orphaned textures list
113
+ */
114
+ removeFromOrphanedTextures(texture: Texture): void;
115
+ /**
116
+ * Set the memory usage of a texture
117
+ *
118
+ * @param texture - The texture to set memory usage for
119
+ * @param byteSize - The size of the texture in bytes
120
+ */
91
121
  setTextureMemUse(texture: Texture, byteSize: number): void;
92
122
  checkCleanup(): boolean;
93
123
  cleanup(): void;
@@ -1,3 +1,22 @@
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 2024 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
+ import { isProductionEnvironment } from '../utils.js';
1
20
  import { bytesToMb } from './utils.js';
2
21
  /**
3
22
  * LRU (Least Recently Used) style memory manager for textures
@@ -18,6 +37,7 @@ export class TextureMemoryManager {
18
37
  stage;
19
38
  memUsed = 0;
20
39
  loadedTextures = new Map();
40
+ orphanedTextures = [];
21
41
  criticalThreshold;
22
42
  targetThreshold;
23
43
  cleanupInterval;
@@ -41,6 +61,7 @@ export class TextureMemoryManager {
41
61
  this.targetThreshold = Math.round(criticalThreshold * targetFraction);
42
62
  this.cleanupInterval = settings.cleanupInterval;
43
63
  this.debugLogging = settings.debugLogging;
64
+ this.memUsed = Math.round(settings.baselineMemoryAllocation);
44
65
  if (settings.debugLogging) {
45
66
  let lastMemUse = 0;
46
67
  setInterval(() => {
@@ -57,6 +78,34 @@ export class TextureMemoryManager {
57
78
  this.setTextureMemUse = () => { };
58
79
  }
59
80
  }
81
+ /**
82
+ * Add a texture to the orphaned textures list
83
+ *
84
+ * @param texture - The texture to add to the orphaned textures list
85
+ */
86
+ addToOrphanedTextures(texture) {
87
+ // If the texture can be cleaned up, add it to the orphaned textures list
88
+ if (texture.preventCleanup === false) {
89
+ this.orphanedTextures.push(texture);
90
+ }
91
+ }
92
+ /**
93
+ * Remove a texture from the orphaned textures list
94
+ *
95
+ * @param texture - The texture to remove from the orphaned textures list
96
+ */
97
+ removeFromOrphanedTextures(texture) {
98
+ const index = this.orphanedTextures.indexOf(texture);
99
+ if (index !== -1) {
100
+ this.orphanedTextures.splice(index, 1);
101
+ }
102
+ }
103
+ /**
104
+ * Set the memory usage of a texture
105
+ *
106
+ * @param texture - The texture to set memory usage for
107
+ * @param byteSize - The size of the texture in bytes
108
+ */
60
109
  setTextureMemUse(texture, byteSize) {
61
110
  if (this.loadedTextures.has(texture)) {
62
111
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -83,7 +132,7 @@ export class TextureMemoryManager {
83
132
  const critical = this.criticalCleanupRequested;
84
133
  this.lastCleanupTime = this.frameTime;
85
134
  this.criticalCleanupRequested = false;
86
- if (critical) {
135
+ if (critical === true) {
87
136
  this.stage.queueFrameEvent('criticalCleanup', {
88
137
  memUsed: this.memUsed,
89
138
  criticalThreshold: this.criticalThreshold,
@@ -92,52 +141,22 @@ export class TextureMemoryManager {
92
141
  if (this.debugLogging) {
93
142
  console.log(`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}`);
94
143
  }
95
- /**
96
- * Sort the loaded textures by renderability, then by last touch time.
97
- *
98
- * This will ensure that the array is ordered by the following:
99
- * - Non-renderable textures, starting at the least recently rendered
100
- * - Renderable textures, starting at the least recently rendered
101
- */
102
- const textures = [...this.loadedTextures.keys()].sort((textureA, textureB) => {
103
- const txARenderable = textureA.renderable;
104
- const txBRenderable = textureB.renderable;
105
- if (txARenderable === txBRenderable) {
106
- return (textureA.lastRenderableChangeTime -
107
- textureB.lastRenderableChangeTime);
108
- }
109
- else if (txARenderable) {
110
- return 1;
111
- }
112
- else if (txBRenderable) {
113
- return -1;
114
- }
115
- return 0;
116
- });
117
144
  // Free non-renderable textures until we reach the target threshold
118
145
  const memTarget = this.targetThreshold;
119
146
  const txManager = this.stage.txManager;
120
- for (const texture of textures) {
121
- if (texture.renderable) {
122
- // Stop at the first renderable texture (The rest are renderable because of the sort above)
123
- // We don't want to free renderable textures because they will just likely be reloaded in the next frame
124
- break;
125
- }
126
- if (texture.preventCleanup === false) {
127
- texture.free();
128
- txManager.removeTextureFromCache(texture);
129
- }
130
- if (this.memUsed <= memTarget) {
131
- // Stop once we've freed enough textures to reach under the target threshold
132
- break;
133
- }
147
+ while (this.memUsed >= memTarget && this.orphanedTextures.length > 0) {
148
+ const texture = this.orphanedTextures.shift();
149
+ texture.free();
150
+ txManager.removeTextureFromCache(texture);
134
151
  }
135
152
  if (this.memUsed >= this.criticalThreshold) {
136
153
  this.stage.queueFrameEvent('criticalCleanupFailed', {
137
154
  memUsed: this.memUsed,
138
155
  criticalThreshold: this.criticalThreshold,
139
156
  });
140
- console.warn(`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`);
157
+ if (this.debugLogging === true || isProductionEnvironment() === false) {
158
+ console.warn(`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`);
159
+ }
141
160
  }
142
161
  }
143
162
  /**
@@ -160,6 +179,7 @@ export class TextureMemoryManager {
160
179
  memUsed: this.memUsed,
161
180
  renderableTexturesLoaded,
162
181
  loadedTextures: this.loadedTextures.size,
182
+ baselineMemoryAllocation: this.memUsed - renderableMemUsed,
163
183
  };
164
184
  }
165
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class RenderCoords {
2
+ data: Float32Array;
3
+ constructor(entries?: [number, number, number, number, number, number, number, number] | Float32Array);
4
+ get x1(): number;
5
+ get x2(): number;
6
+ get x3(): number;
7
+ get xValues(): [number, number, number, number];
8
+ get x4(): number;
9
+ get y1(): number;
10
+ get y2(): number;
11
+ get y3(): number;
12
+ get y4(): number;
13
+ get yValues(): [number, number, number, number];
14
+ }
@@ -0,0 +1,55 @@
1
+ const x1 = 0;
2
+ const x2 = 2;
3
+ const x3 = 4;
4
+ const x4 = 6;
5
+ const y1 = 1;
6
+ const y2 = 3;
7
+ const y3 = 5;
8
+ const y4 = 7;
9
+ export class RenderCoords {
10
+ data;
11
+ constructor(entries) {
12
+ this.data = new Float32Array(8);
13
+ if (entries) {
14
+ this.data[x1] = entries[x1];
15
+ this.data[x2] = entries[x2];
16
+ this.data[x3] = entries[x3];
17
+ this.data[x4] = entries[x4];
18
+ this.data[y1] = entries[y1];
19
+ this.data[y2] = entries[y2];
20
+ this.data[y3] = entries[y3];
21
+ this.data[y4] = entries[y4];
22
+ }
23
+ }
24
+ get x1() {
25
+ return this.data[x1];
26
+ }
27
+ get x2() {
28
+ return this.data[x2];
29
+ }
30
+ get x3() {
31
+ return this.data[x3];
32
+ }
33
+ get xValues() {
34
+ return [this.data[x1], this.data[x2], this.data[x3], this.data[x4]];
35
+ }
36
+ get x4() {
37
+ return this.data[x4];
38
+ }
39
+ get y1() {
40
+ return this.data[y1];
41
+ }
42
+ get y2() {
43
+ return this.data[y2];
44
+ }
45
+ get y3() {
46
+ return this.data[y3];
47
+ }
48
+ get y4() {
49
+ return this.data[y4];
50
+ }
51
+ get yValues() {
52
+ return [this.data[y1], this.data[y2], this.data[y3], this.data[y4]];
53
+ }
54
+ }
55
+ //# sourceMappingURL=Coords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Coords.js","sourceRoot":"","sources":["../../../../src/core/lib/Coords.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,MAAM,EAAE,GAAG,CAAC,CAAC;AAEb,MAAM,OAAO,YAAY;IAChB,IAAI,CAAe;IAC1B,YAAY,OAEI;QAEd,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,IAAG,OAAO,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;SAC7B;IACH,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAA;IACzE,CAAC;CACF"}