@lightningjs/renderer 0.7.5 → 0.7.6

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 (218) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +229 -221
  4. package/dist/src/common/CommonTypes.d.ts +6 -0
  5. package/dist/src/core/CoreNode.d.ts +21 -4
  6. package/dist/src/core/CoreNode.js +145 -34
  7. package/dist/src/core/CoreNode.js.map +1 -1
  8. package/dist/src/core/CoreTextNode.d.ts +1 -1
  9. package/dist/src/core/CoreTextNode.js +18 -10
  10. package/dist/src/core/CoreTextNode.js.map +1 -1
  11. package/dist/src/core/CoreTextureManager.d.ts +3 -1
  12. package/dist/src/core/CoreTextureManager.js +9 -2
  13. package/dist/src/core/CoreTextureManager.js.map +1 -1
  14. package/dist/src/core/Stage.d.ts +2 -0
  15. package/dist/src/core/Stage.js +9 -1
  16. package/dist/src/core/Stage.js.map +1 -1
  17. package/dist/src/core/lib/ImageWorker.d.ts +0 -1
  18. package/dist/src/core/lib/ImageWorker.js +55 -40
  19. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  20. package/dist/src/core/lib/RenderCoords.d.ts +13 -0
  21. package/dist/src/core/lib/RenderCoords.js +63 -0
  22. package/dist/src/core/lib/RenderCoords.js.map +1 -0
  23. package/dist/src/core/lib/WebGlContext.d.ts +414 -0
  24. package/dist/src/core/lib/WebGlContext.js +640 -0
  25. package/dist/src/core/lib/WebGlContext.js.map +1 -0
  26. package/dist/src/core/lib/utils.d.ts +1 -0
  27. package/dist/src/core/lib/utils.js +6 -0
  28. package/dist/src/core/lib/utils.js.map +1 -1
  29. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +4 -1
  30. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  31. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +9 -0
  32. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +14 -0
  33. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  34. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +47 -47
  35. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  36. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  37. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  38. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +49 -49
  39. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  40. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +5 -5
  41. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  42. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  43. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  44. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  45. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  46. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  47. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +31 -31
  48. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +13 -13
  49. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  50. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  51. package/dist/src/core/scene/Scene.d.ts +59 -0
  52. package/dist/src/core/scene/Scene.js +106 -0
  53. package/dist/src/core/scene/Scene.js.map +1 -0
  54. package/dist/src/core/text-rendering/TrFontManager.js +30 -25
  55. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -1
  56. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +8 -2
  57. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  58. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +8 -2
  59. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  60. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.d.ts +8 -0
  61. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js +29 -0
  62. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js.map +1 -0
  63. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.d.ts +19 -0
  64. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js +84 -0
  65. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js.map +1 -0
  66. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts +8 -0
  67. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js +40 -0
  68. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js.map +1 -0
  69. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.d.ts +2 -0
  70. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js +41 -0
  71. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js.map +1 -0
  72. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts +1 -0
  73. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js +4 -0
  74. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map +1 -0
  75. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.d.ts +1 -0
  76. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js +2 -0
  77. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js.map +1 -0
  78. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  79. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  80. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  81. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts +9 -0
  82. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js +32 -0
  83. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map +1 -0
  84. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +12 -0
  85. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  86. package/dist/src/core/textures/ImageTexture.js +16 -2
  87. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  88. package/dist/src/core/textures/Texture.d.ts +1 -1
  89. package/dist/src/core/textures/Texture.js.map +1 -1
  90. package/dist/src/core/utils.d.ts +1 -1
  91. package/dist/src/main-api/RendererMain.d.ts +6 -0
  92. package/dist/src/main-api/RendererMain.js +1 -0
  93. package/dist/src/main-api/RendererMain.js.map +1 -1
  94. package/dist/src/render-drivers/main/MainCoreDriver.js +1 -0
  95. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  96. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +4 -0
  97. package/dist/src/render-drivers/main/MainOnlyNode.js +22 -0
  98. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  99. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +1 -0
  100. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  101. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +1 -0
  102. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
  103. package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
  104. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  105. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  106. package/exports/core-api.ts +102 -102
  107. package/exports/main-api.ts +60 -60
  108. package/exports/utils.ts +41 -41
  109. package/package.json +1 -1
  110. package/scripts/please-use-pnpm.js +13 -13
  111. package/src/common/CommonTypes.ts +125 -113
  112. package/src/common/EventEmitter.ts +77 -77
  113. package/src/common/IAnimationController.ts +29 -29
  114. package/src/core/CoreExtension.ts +32 -32
  115. package/src/core/CoreNode.ts +1114 -955
  116. package/src/core/CoreShaderManager.ts +243 -243
  117. package/src/core/CoreTextNode.ts +399 -391
  118. package/src/core/CoreTextureManager.ts +337 -326
  119. package/src/core/Stage.ts +365 -354
  120. package/src/core/animations/AnimationManager.ts +38 -38
  121. package/src/core/animations/CoreAnimation.ts +181 -181
  122. package/src/core/animations/CoreAnimationController.ts +148 -148
  123. package/src/core/lib/ContextSpy.ts +41 -41
  124. package/src/core/lib/ImageWorker.ts +149 -135
  125. package/src/core/lib/Matrix3d.ts +290 -290
  126. package/src/core/lib/RenderCoords.ts +86 -0
  127. package/src/core/lib/WebGlContextWrapper.ts +992 -992
  128. package/src/core/lib/textureCompression.ts +152 -152
  129. package/src/core/lib/utils.ts +250 -241
  130. package/src/core/platform.ts +46 -46
  131. package/src/core/renderers/CoreContextTexture.ts +30 -30
  132. package/src/core/renderers/CoreRenderOp.ts +22 -22
  133. package/src/core/renderers/CoreRenderer.ts +63 -63
  134. package/src/core/renderers/CoreShader.ts +41 -41
  135. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +37 -37
  136. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +233 -230
  137. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +107 -107
  138. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +520 -520
  139. package/src/core/renderers/webgl/WebGlCoreShader.ts +337 -337
  140. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  141. package/src/core/renderers/webgl/internal/RendererUtils.ts +148 -131
  142. package/src/core/renderers/webgl/internal/ShaderUtils.ts +136 -136
  143. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  144. package/src/core/renderers/webgl/shaders/DefaultShader.ts +95 -95
  145. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  146. package/src/core/renderers/webgl/shaders/DynamicShader.ts +474 -474
  147. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +161 -161
  148. package/src/core/renderers/webgl/shaders/SdfShader.ts +174 -174
  149. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  150. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +86 -86
  151. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  152. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  153. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  154. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +33 -33
  155. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +135 -135
  156. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +145 -145
  157. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  158. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +176 -176
  159. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +159 -159
  160. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +186 -186
  161. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +121 -121
  162. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +114 -114
  163. package/src/core/text-rendering/TextTextureRendererUtils.ts +189 -189
  164. package/src/core/text-rendering/TrFontManager.ts +170 -166
  165. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +141 -141
  166. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  167. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  168. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +169 -169
  169. package/src/core/text-rendering/font-face-types/TrFontFace.ts +105 -105
  170. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +77 -77
  171. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +757 -751
  172. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +741 -741
  173. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +784 -778
  174. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  175. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  176. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  177. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  178. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +84 -84
  179. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  180. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  181. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +393 -393
  182. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  183. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +51 -51
  184. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  185. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  186. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  187. package/src/core/text-rendering/renderers/TextRenderer.ts +516 -504
  188. package/src/core/textures/ColorTexture.ts +86 -86
  189. package/src/core/textures/ImageTexture.ts +154 -140
  190. package/src/core/textures/NoiseTexture.ts +96 -96
  191. package/src/core/textures/SubTexture.ts +143 -143
  192. package/src/core/textures/Texture.ts +224 -218
  193. package/src/core/utils.ts +224 -224
  194. package/src/env.d.ts +7 -7
  195. package/src/main-api/ICoreDriver.ts +66 -66
  196. package/src/main-api/INode.ts +499 -499
  197. package/src/main-api/Inspector.ts +439 -439
  198. package/src/main-api/RendererMain.ts +659 -652
  199. package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +45 -45
  200. package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +154 -154
  201. package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +54 -54
  202. package/src/render-drivers/main/MainCoreDriver.ts +149 -148
  203. package/src/render-drivers/main/MainOnlyNode.ts +494 -466
  204. package/src/render-drivers/main/MainOnlyTextNode.ts +261 -261
  205. package/src/render-drivers/threadx/NodeStruct.ts +300 -300
  206. package/src/render-drivers/threadx/SharedNode.ts +97 -97
  207. package/src/render-drivers/threadx/TextNodeStruct.ts +211 -211
  208. package/src/render-drivers/threadx/ThreadXCoreDriver.ts +286 -285
  209. package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +99 -99
  210. package/src/render-drivers/threadx/ThreadXMainNode.ts +192 -192
  211. package/src/render-drivers/threadx/ThreadXMainTextNode.ts +85 -85
  212. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +111 -110
  213. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +238 -238
  214. package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +149 -149
  215. package/src/render-drivers/threadx/worker/renderer.ts +152 -151
  216. package/src/render-drivers/utils.ts +97 -97
  217. package/src/utils.ts +207 -207
  218. package/COPYING +0 -1
@@ -0,0 +1,640 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
3
+ import { assertTruthy } from "../../utils.js";
4
+ const TEMP = new WeakMap();
5
+ const nextId = 0;
6
+ export class WebGlContext {
7
+ gl;
8
+ activeTextureUnit = 0;
9
+ texture2dUnits;
10
+ texture2dParams = new WeakMap();
11
+ scissorEnabled;
12
+ scissorX;
13
+ scissorY;
14
+ scissorWidth;
15
+ scissorHeight;
16
+ blendEnabled;
17
+ blendSrcRgb;
18
+ blendDstRgb;
19
+ blendSrcAlpha;
20
+ blendDstAlpha;
21
+ boundArrayBuffer;
22
+ boundElementArrayBuffer;
23
+ curProgram;
24
+ programUniforms = new WeakMap();
25
+ constructor(gl) {
26
+ this.gl = gl;
27
+ this.activeTextureUnit =
28
+ gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;
29
+ const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
30
+ // save current texture units
31
+ this.texture2dUnits = new Array(maxTextureUnits)
32
+ .fill(undefined)
33
+ .map((_, i) => {
34
+ this.activeTexture(i);
35
+ return gl.getParameter(gl.TEXTURE_BINDING_2D);
36
+ });
37
+ // restore active texture unit
38
+ this.activeTexture(this.activeTextureUnit);
39
+ this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);
40
+ const scissorBox = gl.getParameter(gl.SCISSOR_BOX);
41
+ this.scissorX = scissorBox[0];
42
+ this.scissorY = scissorBox[1];
43
+ this.scissorWidth = scissorBox[2];
44
+ this.scissorHeight = scissorBox[3];
45
+ this.blendEnabled = gl.isEnabled(gl.BLEND);
46
+ this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);
47
+ this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);
48
+ this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);
49
+ this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);
50
+ this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);
51
+ this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);
52
+ this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);
53
+ }
54
+ /**
55
+ * ```
56
+ * gl.activeTexture(textureUnit + gl.TEXTURE0);
57
+ * ```
58
+ *
59
+ * @remarks
60
+ * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.
61
+ *
62
+ * @param textureUnit
63
+ */
64
+ activeTexture(textureUnit) {
65
+ const { gl } = this;
66
+ if (this.activeTextureUnit !== textureUnit) {
67
+ gl.activeTexture(textureUnit + gl.TEXTURE0);
68
+ this.activeTextureUnit = textureUnit;
69
+ }
70
+ }
71
+ /**
72
+ * ```
73
+ * gl.bindTexture(gl.TEXTURE_2D, texture);
74
+ * ```
75
+ * @remarks
76
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
77
+ *
78
+ * @param texture
79
+ */
80
+ bindTexture(texture) {
81
+ const { gl, activeTextureUnit, texture2dUnits } = this;
82
+ if (texture2dUnits[activeTextureUnit] === texture) {
83
+ return;
84
+ }
85
+ texture2dUnits[activeTextureUnit] = texture;
86
+ gl.bindTexture(this.gl.TEXTURE_2D, texture);
87
+ }
88
+ _getActiveTexture() {
89
+ const { activeTextureUnit, texture2dUnits } = this;
90
+ return texture2dUnits[activeTextureUnit];
91
+ }
92
+ /**
93
+ * ```
94
+ * gl.texParameteri(gl.TEXTURE_2D, pname, param)
95
+ * ```
96
+ * @remarks
97
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
98
+ *
99
+ * @param pname
100
+ * @param param
101
+ * @returns
102
+ */
103
+ texParameteri(pname, param) {
104
+ // !!! Is all this worth it? Probably not for what we use it for.
105
+ const { gl, texture2dParams } = this;
106
+ const activeTexture = this._getActiveTexture();
107
+ if (!activeTexture) {
108
+ throw new Error('No active texture');
109
+ }
110
+ let textureParams = texture2dParams.get(activeTexture);
111
+ if (!textureParams) {
112
+ textureParams = {};
113
+ texture2dParams.set(activeTexture, textureParams);
114
+ }
115
+ if (textureParams[pname] === param) {
116
+ return;
117
+ }
118
+ textureParams[pname] = param;
119
+ gl.texParameteri(gl.TEXTURE_2D, pname, param);
120
+ }
121
+ texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {
122
+ const { gl } = this;
123
+ if (format) {
124
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
125
+ }
126
+ else {
127
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
128
+ }
129
+ }
130
+ /**
131
+ * ```
132
+ * gl.pixelStorei(pname, param);
133
+ * ```
134
+ *
135
+ * @param pname
136
+ * @param param
137
+ */
138
+ pixelStorei(pname, param) {
139
+ const { gl } = this;
140
+ gl.pixelStorei(pname, param);
141
+ }
142
+ /**
143
+ * ```
144
+ * gl.generateMipmap(gl.TEXTURE_2D);
145
+ * ```
146
+ *
147
+ * @remarks
148
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
149
+ */
150
+ generateMipmap() {
151
+ const { gl } = this;
152
+ gl.generateMipmap(gl.TEXTURE_2D);
153
+ }
154
+ /**
155
+ * ```
156
+ * gl.createTexture();
157
+ * ```
158
+ *
159
+ * @returns
160
+ */
161
+ createTexture() {
162
+ const { gl } = this;
163
+ return gl.createTexture();
164
+ }
165
+ /**
166
+ * ```
167
+ * gl.deleteTexture(texture);
168
+ * ```
169
+ *
170
+ * @param texture
171
+ */
172
+ deleteTexture(texture) {
173
+ const { gl } = this;
174
+ if (texture) {
175
+ this.texture2dParams.delete(texture);
176
+ }
177
+ gl.deleteTexture(texture);
178
+ }
179
+ /**
180
+ * ```
181
+ * gl.viewport(x, y, width, height);
182
+ * ```
183
+ */
184
+ viewport(x, y, width, height) {
185
+ const { gl } = this;
186
+ gl.viewport(x, y, width, height);
187
+ }
188
+ /**
189
+ * ```
190
+ * gl.clearColor(red, green, blue, alpha);
191
+ * ```
192
+ *
193
+ * @param red
194
+ * @param green
195
+ * @param blue
196
+ * @param alpha
197
+ */
198
+ clearColor(red, green, blue, alpha) {
199
+ const { gl } = this;
200
+ gl.clearColor(red, green, blue, alpha);
201
+ }
202
+ /**
203
+ * ```
204
+ * gl["enable"|"disable"](gl.SCISSOR_TEST);
205
+ * ```
206
+ * @param enable
207
+ */
208
+ scissorTest(enable) {
209
+ const { gl, scissorEnabled } = this;
210
+ if (enable === scissorEnabled) {
211
+ return;
212
+ }
213
+ if (enable) {
214
+ gl.enable(gl.SCISSOR_TEST);
215
+ }
216
+ else {
217
+ gl.disable(gl.SCISSOR_TEST);
218
+ }
219
+ this.scissorEnabled = enable;
220
+ }
221
+ /**
222
+ * ```
223
+ * gl.scissor(x, y, width, height);
224
+ * ```
225
+ *
226
+ * @param x
227
+ * @param y
228
+ * @param width
229
+ * @param height
230
+ */
231
+ scissor(x, y, width, height) {
232
+ const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;
233
+ if (x !== scissorX ||
234
+ y !== scissorY ||
235
+ width !== scissorWidth ||
236
+ height !== scissorHeight) {
237
+ gl.scissor(x, y, width, height);
238
+ this.scissorX = x;
239
+ this.scissorY = y;
240
+ this.scissorWidth = width;
241
+ this.scissorHeight = height;
242
+ }
243
+ }
244
+ /**
245
+ * ```
246
+ * gl["enable"|"disable"](gl.BLEND);
247
+ * ```
248
+ *
249
+ * @param blend
250
+ * @returns
251
+ */
252
+ setBlend(blend) {
253
+ const { gl, blendEnabled } = this;
254
+ if (blend === blendEnabled) {
255
+ return;
256
+ }
257
+ if (blend) {
258
+ gl.enable(gl.BLEND);
259
+ }
260
+ else {
261
+ gl.disable(gl.BLEND);
262
+ }
263
+ this.blendEnabled = blend;
264
+ }
265
+ /**
266
+ * ```
267
+ * gl.blendFunc(src, dst);
268
+ * ```
269
+ *
270
+ * @param src
271
+ * @param dst
272
+ */
273
+ blendFunc(src, dst) {
274
+ const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;
275
+ if (src !== blendSrcRgb ||
276
+ dst !== blendDstRgb ||
277
+ src !== blendSrcAlpha ||
278
+ dst !== blendDstAlpha) {
279
+ gl.blendFunc(src, dst);
280
+ this.blendSrcRgb = src;
281
+ this.blendDstRgb = dst;
282
+ this.blendSrcAlpha = src;
283
+ this.blendDstAlpha = dst;
284
+ }
285
+ }
286
+ /**
287
+ * ```
288
+ * createBuffer();
289
+ * ```
290
+ *
291
+ * @returns
292
+ */
293
+ createBuffer() {
294
+ const { gl } = this;
295
+ return gl.createBuffer();
296
+ }
297
+ /**
298
+ * ```
299
+ * gl.clear(gl.COLOR_BUFFER_BIT);
300
+ * ```
301
+ *
302
+ * @remarks
303
+ * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
304
+ */
305
+ clear() {
306
+ const { gl } = this;
307
+ gl.clear(gl.COLOR_BUFFER_BIT);
308
+ }
309
+ /**
310
+ * ```
311
+ * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
312
+ * gl.bufferData(gl.ARRAY_BUFFER, data, usage);
313
+ * ```
314
+ *
315
+ * @remarks
316
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.
317
+ *
318
+ * @param buffer
319
+ * @param data
320
+ * @param usage
321
+ */
322
+ arrayBufferData(buffer, data, usage) {
323
+ const { gl, boundArrayBuffer } = this;
324
+ if (boundArrayBuffer !== buffer) {
325
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
326
+ this.boundArrayBuffer = buffer;
327
+ }
328
+ gl.bufferData(gl.ARRAY_BUFFER, data, usage);
329
+ }
330
+ /**
331
+ * ```
332
+ * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
333
+ * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
334
+ * ```
335
+ * @remarks
336
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.
337
+ *
338
+ * @param buffer
339
+ * @param data
340
+ * @param usage
341
+ */
342
+ elementArrayBufferData(buffer, data, usage) {
343
+ const { gl, boundElementArrayBuffer } = this;
344
+ if (boundElementArrayBuffer !== buffer) {
345
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
346
+ this.boundElementArrayBuffer = buffer;
347
+ }
348
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
349
+ }
350
+ /**
351
+ * ```
352
+ * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
353
+ * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
354
+ * ```
355
+ *
356
+ * @remarks
357
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.
358
+ *
359
+ * @param buffer
360
+ * @param index
361
+ * @param size
362
+ * @param type
363
+ * @param normalized
364
+ * @param stride
365
+ * @param offset
366
+ */
367
+ vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {
368
+ const { gl, boundArrayBuffer } = this;
369
+ if (boundArrayBuffer !== buffer) {
370
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
371
+ this.boundArrayBuffer = buffer;
372
+ }
373
+ gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
374
+ }
375
+ /**
376
+ * ```
377
+ * gl.useProgram(program);
378
+ * ```
379
+ *
380
+ * @param program
381
+ * @returns
382
+ */
383
+ useProgram(program) {
384
+ const { gl, curProgram } = this;
385
+ if (curProgram === program) {
386
+ return;
387
+ }
388
+ gl.useProgram(program);
389
+ this.curProgram = program;
390
+ }
391
+ setUniform(type, location, ...args) {
392
+ const { gl, programUniforms } = this;
393
+ let uniforms = programUniforms.get(this.curProgram);
394
+ if (!uniforms) {
395
+ uniforms = new Map();
396
+ programUniforms.set(this.curProgram, uniforms);
397
+ }
398
+ const uniformArgs = uniforms.get(location);
399
+ if (!uniformArgs || !compareArrays(uniformArgs, args)) {
400
+ uniforms.set(location, args);
401
+ gl[type](location, ...args);
402
+ }
403
+ }
404
+ /**
405
+ * ```
406
+ * gl.getParameter(pname);
407
+ * ```
408
+ *
409
+ * @param pname
410
+ * @returns
411
+ */
412
+ getParameter(pname) {
413
+ const { gl } = this;
414
+ return gl.getParameter(pname);
415
+ }
416
+ /**
417
+ * ```
418
+ * gl.drawElements(mode, count, type, offset);
419
+ * ```
420
+ *
421
+ * @param mode
422
+ * @param count
423
+ * @param type
424
+ * @param offset
425
+ */
426
+ drawElements(mode, count, type, offset) {
427
+ const { gl } = this;
428
+ gl.drawElements(mode, count, type, offset);
429
+ }
430
+ /**
431
+ * ```
432
+ * gl.drawArrays(mode, first, count);
433
+ * ```
434
+ *
435
+ * @param name
436
+ * @returns
437
+ */
438
+ getExtension(name) {
439
+ const { gl } = this;
440
+ return gl.getExtension(name);
441
+ }
442
+ /**
443
+ * ```
444
+ * gl.createVertexArray();
445
+ * ```
446
+ *
447
+ * @returns
448
+ */
449
+ createVertexArray() {
450
+ const { gl } = this;
451
+ assertTruthy(gl instanceof WebGL2RenderingContext);
452
+ return gl.createVertexArray();
453
+ }
454
+ /**
455
+ * ```
456
+ * gl.bindVertexArray(vertexArray);
457
+ * ```
458
+ *
459
+ * @param vertexArray
460
+ */
461
+ bindVertexArray(vertexArray) {
462
+ const { gl } = this;
463
+ assertTruthy(gl instanceof WebGL2RenderingContext);
464
+ gl.bindVertexArray(vertexArray);
465
+ }
466
+ /**
467
+ * ```
468
+ * gl.getAttribLocation(program, name);
469
+ * ```
470
+ *
471
+ * @param program
472
+ * @param name
473
+ * @returns
474
+ */
475
+ getAttribLocation(program, name) {
476
+ const { gl } = this;
477
+ return gl.getAttribLocation(program, name);
478
+ }
479
+ /**
480
+ * ```
481
+ * gl.getUniformLocation(program, name);
482
+ * ```
483
+ *
484
+ * @param program
485
+ * @param name
486
+ * @returns
487
+ */
488
+ getUniformLocation(program, name) {
489
+ const { gl } = this;
490
+ return gl.getUniformLocation(program, name);
491
+ }
492
+ /**
493
+ * ```
494
+ * gl.enableVertexAttribArray(index);
495
+ * ```
496
+ *
497
+ * @param index
498
+ */
499
+ enableVertexAttribArray(index) {
500
+ const { gl } = this;
501
+ gl.enableVertexAttribArray(index);
502
+ }
503
+ /**
504
+ * ```
505
+ * gl.disableVertexAttribArray(index);
506
+ * ```
507
+ *
508
+ * @param index
509
+ */
510
+ disableVertexAttribArray(index) {
511
+ const { gl } = this;
512
+ gl.disableVertexAttribArray(index);
513
+ }
514
+ /**
515
+ * ```
516
+ * gl.createShader(type);
517
+ * ```
518
+ *
519
+ * @param type
520
+ * @returns
521
+ */
522
+ createShader(type) {
523
+ const { gl } = this;
524
+ return gl.createShader(type);
525
+ }
526
+ /**
527
+ * ```
528
+ * gl.compileShader(shader);
529
+ * ```
530
+ *
531
+ * @param shader
532
+ * @returns
533
+ */
534
+ compileShader(shader) {
535
+ const { gl } = this;
536
+ gl.compileShader(shader);
537
+ }
538
+ /**
539
+ * ```
540
+ * gl.attachShader(program, shader);
541
+ * ```
542
+ *
543
+ * @param program
544
+ * @param shader
545
+ */
546
+ attachShader(program, shader) {
547
+ const { gl } = this;
548
+ gl.attachShader(program, shader);
549
+ }
550
+ /**
551
+ * ```
552
+ * gl.linkProgram(program);
553
+ * ```
554
+ *
555
+ * @param program
556
+ */
557
+ linkProgram(program) {
558
+ const { gl } = this;
559
+ gl.linkProgram(program);
560
+ }
561
+ /**
562
+ * ```
563
+ * gl.deleteProgram(shader);
564
+ * ```
565
+ *
566
+ * @param shader
567
+ */
568
+ deleteProgram(shader) {
569
+ const { gl } = this;
570
+ gl.deleteProgram(shader);
571
+ }
572
+ /**
573
+ * ```
574
+ * gl.getShaderParameter(shader, pname);
575
+ * ```
576
+ *
577
+ * @param shader
578
+ * @param pname
579
+ */
580
+ getShaderParameter(shader, pname) {
581
+ const { gl } = this;
582
+ return gl.getShaderParameter(shader, pname);
583
+ }
584
+ /**
585
+ * ```
586
+ * gl.getShaderInfoLog(shader);
587
+ * ```
588
+ *
589
+ * @param shader
590
+ */
591
+ getShaderInfoLog(shader) {
592
+ const { gl } = this;
593
+ return gl.getShaderInfoLog(shader);
594
+ }
595
+ /**
596
+ * ```
597
+ * gl.createProgram();
598
+ * ```
599
+ *
600
+ * @returns
601
+ */
602
+ createProgram() {
603
+ const { gl } = this;
604
+ return gl.createProgram();
605
+ }
606
+ /**
607
+ * ```
608
+ * gl.getProgramParameter(program, pname);
609
+ * ```
610
+ *
611
+ * @param program
612
+ * @param pname
613
+ * @returns
614
+ */
615
+ getProgramParameter(program, pname) {
616
+ const { gl } = this;
617
+ return gl.getProgramParameter(program, pname);
618
+ }
619
+ }
620
+ /**
621
+ *
622
+ *
623
+ * @param a
624
+ * @param b
625
+ * @returns
626
+ */
627
+ export function compareArrays(a, b) {
628
+ if (a.length !== b.length) {
629
+ return false;
630
+ }
631
+ return a.every((v, i) => {
632
+ if (Array.isArray(v)) {
633
+ return compareArrays(v, b[i]);
634
+ }
635
+ else {
636
+ return v === b[i];
637
+ }
638
+ });
639
+ }
640
+ //# sourceMappingURL=WebGlContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGlContext.js","sourceRoot":"","sources":["../../../../src/core/lib/WebGlContext.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,0DAA0D;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,IAAI,GAAG,IAAI,OAAO,EAAwB,CAAC;AACjD,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAM,OAAO,YAAY;IAyBH;IAxBZ,iBAAiB,GAAG,CAAC,CAAC;IACtB,cAAc,CAA6B;IAC3C,eAAe,GAGnB,IAAI,OAAO,EAAE,CAAC;IACV,cAAc,CAAC;IACf,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,aAAa,CAAS;IACtB,YAAY,CAAC;IACb,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,gBAAgB,CAAqB;IACrC,uBAAuB,CAAqB;IAC5C,UAAU,CAAsB;IAChC,eAAe,GAGnB,IAAI,OAAO,EAAE,CAAC;IAElB,YAAoB,EAAkD;QAAlD,OAAE,GAAF,EAAE,CAAgD;QACpE,IAAI,CAAC,iBAAiB;YACnB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,CAAY,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC/D,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CACrC,EAAE,CAAC,uBAAuB,CACjB,CAAC;QACZ,6BAA6B;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAY,eAAe,CAAC;aACxD,IAAI,CAAC,SAAS,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAiB,CAAC;QAChE,CAAC,CAAC,CAAC;QACL,8BAA8B;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAEpD,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAKhD,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAW,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAW,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,eAAe,CAAW,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,eAAe,CAAW,CAAC;QAEnE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,YAAY,CACrC,EAAE,CAAC,oBAAoB,CACT,CAAC;QACjB,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,YAAY,CAC5C,EAAE,CAAC,4BAA4B,CACjB,CAAC;QAEjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,eAAe,CAAwB,CAAC;IAC/E,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAmB;QAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE;YAC1C,EAAE,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;SACtC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,OAA4B;QACtC,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEvD,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,OAAO,EAAE;YACjD,OAAO;SACR;QACD,cAAc,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;QAE5C,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,iBAAiB;QACvB,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACnD,OAAO,cAAc,CAAC,iBAAiB,CAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa,CAAC,KAAa,EAAE,KAAa;QACxC,iEAAiE;QACjE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAErC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QACD,IAAI,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,EAAE,CAAC;YACnB,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YAClC,OAAO;SACR;QACD,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC7B,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IA6CD,UAAU,CACR,KAAU,EACV,cAAmB,EACnB,aAAkB,EAClB,YAAiB,EACjB,cAAmB,EACnB,MAAY,EACZ,IAAU,EACV,MAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,IAAI,MAAM,EAAE;YACV,EAAE,CAAC,UAAU,CACX,EAAE,CAAC,UAAU,EACb,KAAK,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,MAAM,EACN,IAAI,EACJ,MAAM,CACP,CAAC;SACH;aAAM;YACL,EAAE,CAAC,UAAU,CACX,EAAE,CAAC,UAAU,EACb,KAAK,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,CACf,CAAC;SACH;IACH,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,KAAa,EAAE,KAAwB;QACjD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,cAAc;QACZ,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAA4B;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACtC;QACD,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,CAAQ,EAAE,CAAQ,EAAE,KAAc,EAAE,MAAe;QAC1D,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,GAAa,EAAE,KAAe,EAAE,IAAc,EAAE,KAAe;QACxE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACpC,IAAI,MAAM,KAAK,cAAc,EAAE;YAC7B,OAAO;SACR;QACD,IAAI,MAAM,EAAE;YACV,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;SAC5B;aAAM;YACL,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAQ,EAAE,CAAQ,EAAE,KAAc,EAAE,MAAe;QACzD,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACrE,IACE,CAAC,KAAK,QAAQ;YACd,CAAC,KAAK,QAAQ;YACd,KAAK,KAAK,YAAY;YACtB,MAAM,KAAK,aAAa,EACxB;YACA,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;SAC7B;IACH,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAc;QACrB,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1B,OAAO;SACR;QACD,IAAI,KAAK,EAAE;YACT,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACL,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,GAAW,EAAE,GAAW;QAChC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAC5E,IACE,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,aAAa;YACrB,GAAG,KAAK,aAAa,EACrB;YACA,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;SAC1B;IACH,CAAC;IAGD;;;;;;OAMG;IACH,YAAY;QACV,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,eAAe,CACb,MAA0B,EAC1B,IAAqB,EACrB,KAAa;QAEb,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,gBAAgB,KAAK,MAAM,EAAE;YAC/B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;SAChC;QACD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,sBAAsB,CACpB,MAA0B,EAC1B,IAAqB,EACrB,KAAa;QAEb,MAAM,EAAE,EAAE,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC;QAC7C,IAAI,uBAAuB,KAAK,MAAM,EAAE;YACtC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;SACvC;QACD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAmB,CACjB,MAAmB,EACnB,KAAa,EACb,IAAW,EACX,IAAY,EACZ,UAAqB,EACrB,MAAe,EACf,MAAgB;QAEhB,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,gBAAgB,KAAK,MAAM,EAAE;YAC/B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;SAChC;QACD,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,OAA4B;QACrC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,UAAU,KAAK,OAAO,EAAE;YAC1B,OAAO;SACR;QACD,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,UAAU,CAAmC,IAAO,EAAE,QAA8B,EAAE,GAAG,IAAyB;QAChH,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QACrC,IAAI,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAW,EAAE,QAAQ,CAAC,CAAC;SACjD;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;YACrD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAI,IAAqC,CAAC,CAAC;SAC/D;IACH,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa;QACxB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY,CAAC,IAAY,EAAE,KAAc,EAAE,IAAY,EAAE,MAAgB;QACvE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,IAAY;QACvB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB;QACf,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,YAAY,CAAC,EAAE,YAAY,sBAAsB,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,WAA0C;QACxD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,YAAY,CAAC,EAAE,YAAY,sBAAsB,CAAC,CAAC;QACnD,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAqB,EAAE,IAAY;QACnD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,kBAAkB,CAAC,OAAqB,EAAE,IAAY;QACpD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,KAAa;QACnC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CAAC,KAAa;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,IAAY;QACvB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,MAAmB;QAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,OAAqB,EAAE,MAAmB;QACrD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAqB;QAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,MAAoB;QAChC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAGD;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAmB,EAAE,KAAa;QACnD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,MAAmB;QAClC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAqB,EAAE,KAAa;QACtD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;CAGF;AAoBD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAI,CAAM,EAAE,CAAM;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAU,CAAC,CAAC;SACxC;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -38,5 +38,6 @@ export declare function intersectRect<T extends Rect = Rect>(a: Rect, b: Rect, o
38
38
  export declare function copyRect(a: Rect): Rect;
39
39
  export declare function copyRect<T extends Rect = Rect>(a: Rect, out: T): T;
40
40
  export declare function compareRect(a: Rect | null, b: Rect | null): boolean;
41
+ export declare function boundInsideBound(bound1: Bound, bound2: Bound): boolean;
41
42
  export declare function isBoundPositive(bound: Bound): boolean;
42
43
  export declare function isRectPositive(rect: Rect): boolean;
@@ -163,6 +163,12 @@ export function compareRect(a, b) {
163
163
  }
164
164
  return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);
165
165
  }
166
+ export function boundInsideBound(bound1, bound2) {
167
+ return (bound1.x1 <= bound2.x2 &&
168
+ bound1.y1 <= bound2.y2 &&
169
+ bound1.x2 >= bound2.x1 &&
170
+ bound1.y2 >= bound2.y1);
171
+ }
166
172
  export function isBoundPositive(bound) {
167
173
  return bound.x1 < bound.x2 && bound.y1 < bound.y2;
168
174
  }