@lightningjs/renderer 2.16.0 → 2.18.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.
- package/dist/src/core/CoreNode.js +7 -5
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +14 -8
- package/dist/src/core/CoreTextureManager.js +33 -59
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +3 -3
- package/dist/src/core/Stage.js +9 -14
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +21 -17
- package/dist/src/core/TextureMemoryManager.js +99 -124
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +10 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +32 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +13 -6
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platform.js +4 -1
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +4 -3
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +59 -29
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +4 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +2 -2
- package/dist/src/core/textures/ColorTexture.js +1 -2
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +7 -1
- package/dist/src/core/textures/ImageTexture.js +55 -39
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.js +1 -1
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.js +1 -1
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +1 -2
- package/dist/src/core/textures/SubTexture.js +11 -29
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +51 -7
- package/dist/src/core/textures/Texture.js +127 -15
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +3 -0
- package/dist/src/main-api/Inspector.js +156 -0
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +1 -3
- package/dist/src/main-api/Renderer.js +2 -4
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +8 -4
- package/src/core/CoreTextureManager.ts +59 -65
- package/src/core/Stage.ts +10 -16
- package/src/core/TextureMemoryManager.ts +118 -148
- package/src/core/lib/WebGlContextWrapper.ts +38 -0
- package/src/core/lib/textureCompression.ts +18 -7
- package/src/core/platform.ts +5 -1
- package/src/core/renderers/CoreContextTexture.ts +1 -0
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +5 -3
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +78 -40
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +10 -4
- package/src/core/textures/ColorTexture.ts +4 -7
- package/src/core/textures/ImageTexture.ts +66 -51
- package/src/core/textures/NoiseTexture.ts +1 -1
- package/src/core/textures/RenderTexture.ts +1 -1
- package/src/core/textures/SubTexture.ts +14 -31
- package/src/core/textures/Texture.ts +150 -21
- package/src/main-api/Inspector.ts +203 -0
- package/src/main-api/Renderer.ts +2 -4
- package/dist/exports/canvas-shaders.d.ts +0 -10
- package/dist/exports/canvas-shaders.js +0 -27
- package/dist/exports/canvas-shaders.js.map +0 -1
- package/dist/exports/webgl-shaders.d.ts +0 -11
- package/dist/exports/webgl-shaders.js +0 -28
- package/dist/exports/webgl-shaders.js.map +0 -1
- package/dist/src/core/platforms/Platform.d.ts +0 -37
- package/dist/src/core/platforms/Platform.js +0 -22
- package/dist/src/core/platforms/Platform.js.map +0 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
- package/dist/src/core/platforms/web/WebPlatform.js +0 -58
- package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -59
- package/dist/src/core/renderers/CoreShaderNode.js +0 -113
- package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
- package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -37
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -215
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -57
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -55
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -57
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -224
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -125
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -136
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -573
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -331
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -35
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -201
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
- package/dist/src/core/shaders/canvas/Border.js +0 -57
- package/dist/src/core/shaders/canvas/Border.js.map +0 -1
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
- package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
- package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
- package/dist/src/core/shaders/canvas/LinearGradient.js +0 -48
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js +0 -70
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/canvas/Rounded.js +0 -33
- package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -43
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -41
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -40
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/Shadow.js +0 -31
- package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
- package/dist/src/core/shaders/canvas/utils/render.js +0 -84
- package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
- package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/utils.d.ts +0 -5
- package/dist/src/core/shaders/utils.js +0 -41
- package/dist/src/core/shaders/utils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Border.js +0 -110
- package/dist/src/core/shaders/webgl/Border.js.map +0 -1
- package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
- package/dist/src/core/shaders/webgl/Default.js +0 -86
- package/dist/src/core/shaders/webgl/Default.js.map +0 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
- package/dist/src/core/shaders/webgl/HolePunch.js +0 -65
- package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/LinearGradient.js +0 -76
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RadialGradient.js +0 -74
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/webgl/Rounded.js +0 -86
- package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -140
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -162
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -32
- package/dist/src/core/shaders/webgl/SdfShader.js +0 -116
- package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
- package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Shadow.js +0 -110
- package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
- package/dist/src/core/shaders/webgl/Spinner.js +0 -2
- package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +0 -25
- package/dist/src/core/text-rendering/CanvasFontHandler.js +0 -117
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +0 -139
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +0 -137
- package/dist/src/core/text-rendering/SdfFontHandler.js +0 -336
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +0 -21
- package/dist/src/core/text-rendering/SdfTextRenderer.js +0 -324
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +0 -425
- package/dist/src/core/text-rendering/TextRenderer.js +0 -70
- package/dist/src/core/text-rendering/TextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/Utils.d.ts +0 -71
- package/dist/src/core/text-rendering/Utils.js +0 -212
- package/dist/src/core/text-rendering/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -53
- package/dist/src/core/text-rendering/canvas/Settings.js +0 -20
- package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -19
- package/dist/src/core/text-rendering/canvas/Utils.js +0 -139
- package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -37
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -188
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
- package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -12
- package/dist/src/core/text-rendering/canvas/draw.js +0 -133
- package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +0 -1
|
@@ -103,9 +103,7 @@ export interface TextureData {
|
|
|
103
103
|
|
|
104
104
|
export type TextureState =
|
|
105
105
|
| 'initial' // Before anything is loaded
|
|
106
|
-
| '
|
|
107
|
-
| 'fetched' // Texture source is ready
|
|
108
|
-
| 'loading' // Uploading to GPU
|
|
106
|
+
| 'loading' // Loading texture data and uploading to GPU
|
|
109
107
|
| 'loaded' // Fully loaded and usable
|
|
110
108
|
| 'failed' // Failed to load
|
|
111
109
|
| 'freed'; // Released and must be reloaded
|
|
@@ -139,16 +137,10 @@ export abstract class Texture extends EventEmitter {
|
|
|
139
137
|
private _dimensions: Dimensions | null = null;
|
|
140
138
|
private _error: Error | null = null;
|
|
141
139
|
|
|
142
|
-
/**
|
|
143
|
-
* Texture states that are considered transitional and should be skipped during cleanup
|
|
144
|
-
*/
|
|
145
|
-
public static readonly TRANSITIONAL_TEXTURE_STATES: readonly TextureState[] =
|
|
146
|
-
['fetching', 'fetched', 'loading'];
|
|
147
|
-
|
|
148
140
|
// aggregate state
|
|
149
141
|
public state: TextureState = 'initial';
|
|
150
142
|
|
|
151
|
-
readonly renderableOwners =
|
|
143
|
+
readonly renderableOwners: any[] = [];
|
|
152
144
|
|
|
153
145
|
readonly renderable: boolean = false;
|
|
154
146
|
|
|
@@ -160,6 +152,34 @@ export abstract class Texture extends EventEmitter {
|
|
|
160
152
|
|
|
161
153
|
public textureData: TextureData | null = null;
|
|
162
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Memory used by this texture in bytes
|
|
157
|
+
*
|
|
158
|
+
* @remarks
|
|
159
|
+
* This is tracked by the TextureMemoryManager and updated when the texture
|
|
160
|
+
* is loaded/freed. Set to 0 when texture is not loaded.
|
|
161
|
+
*/
|
|
162
|
+
public memUsed = 0;
|
|
163
|
+
|
|
164
|
+
public retryCount = 0;
|
|
165
|
+
public maxRetryCount: number | null = null;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Timestamp when texture was created (for startup grace period)
|
|
169
|
+
*/
|
|
170
|
+
private createdAt: number = Date.now();
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Flag to track if grace period has expired to avoid repeated Date.now() calls
|
|
174
|
+
*/
|
|
175
|
+
private gracePeriodExpired: boolean = false;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Grace period in milliseconds to prevent premature cleanup during app startup
|
|
179
|
+
* This helps prevent race conditions when bounds calculation is delayed
|
|
180
|
+
*/
|
|
181
|
+
private static readonly STARTUP_GRACE_PERIOD = 2000; // 2 seconds
|
|
182
|
+
|
|
163
183
|
constructor(protected txManager: CoreTextureManager) {
|
|
164
184
|
super();
|
|
165
185
|
}
|
|
@@ -172,6 +192,59 @@ export abstract class Texture extends EventEmitter {
|
|
|
172
192
|
return this._error;
|
|
173
193
|
}
|
|
174
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Checks if the texture is within the startup grace period.
|
|
197
|
+
* During this period, textures are protected from cleanup to prevent
|
|
198
|
+
* race conditions during app initialization.
|
|
199
|
+
*/
|
|
200
|
+
isWithinStartupGracePeriod(): boolean {
|
|
201
|
+
// If grace period already expired, return false immediately
|
|
202
|
+
if (this.gracePeriodExpired) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Check if grace period has expired now
|
|
207
|
+
const hasExpired =
|
|
208
|
+
Date.now() - this.createdAt >= Texture.STARTUP_GRACE_PERIOD;
|
|
209
|
+
|
|
210
|
+
if (hasExpired) {
|
|
211
|
+
// Cache the result to avoid future Date.now() calls
|
|
212
|
+
this.gracePeriodExpired = true;
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Checks if the texture can be safely cleaned up.
|
|
221
|
+
* Considers the renderable state, startup grace period, and renderable owners.
|
|
222
|
+
*/
|
|
223
|
+
canBeCleanedUp(): boolean {
|
|
224
|
+
// Never cleanup if explicitly prevented
|
|
225
|
+
if (this.preventCleanup) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Don't cleanup if still within startup grace period
|
|
230
|
+
if (this.isWithinStartupGracePeriod()) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Don't cleanup if not renderable
|
|
235
|
+
if (this.renderable === true) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Don't cleanup if there are still renderable owners
|
|
240
|
+
if (this.renderableOwners.length > 0) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Safe to cleanup
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
|
|
175
248
|
/**
|
|
176
249
|
* Add/remove an owner to/from the Texture based on its renderability.
|
|
177
250
|
*
|
|
@@ -186,33 +259,44 @@ export abstract class Texture extends EventEmitter {
|
|
|
186
259
|
* @param owner
|
|
187
260
|
* @param renderable
|
|
188
261
|
*/
|
|
189
|
-
setRenderableOwner(owner:
|
|
190
|
-
const oldSize = this.renderableOwners.
|
|
262
|
+
setRenderableOwner(owner: string | number, renderable: boolean): void {
|
|
263
|
+
const oldSize = this.renderableOwners.length;
|
|
264
|
+
const hasOwnerIndex = this.renderableOwners.indexOf(owner);
|
|
191
265
|
|
|
192
266
|
if (renderable === true) {
|
|
193
|
-
if (
|
|
267
|
+
if (hasOwnerIndex === -1) {
|
|
194
268
|
// Add the owner to the set
|
|
195
|
-
this.renderableOwners.
|
|
269
|
+
this.renderableOwners.push(owner);
|
|
196
270
|
}
|
|
197
271
|
|
|
198
|
-
const newSize = this.renderableOwners.
|
|
199
|
-
if (
|
|
272
|
+
const newSize = this.renderableOwners.length;
|
|
273
|
+
if (oldSize !== newSize && newSize === 1) {
|
|
200
274
|
(this.renderable as boolean) = true;
|
|
201
275
|
this.onChangeIsRenderable?.(true);
|
|
202
276
|
this.load();
|
|
203
277
|
}
|
|
204
278
|
} else {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
279
|
+
if (hasOwnerIndex !== -1) {
|
|
280
|
+
this.renderableOwners.splice(hasOwnerIndex, 1);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
const newSize = this.renderableOwners.length;
|
|
284
|
+
if (oldSize !== newSize && newSize === 0) {
|
|
208
285
|
(this.renderable as boolean) = false;
|
|
209
286
|
this.onChangeIsRenderable?.(false);
|
|
210
|
-
|
|
287
|
+
|
|
288
|
+
// note, not doing a cleanup here, cleanup is managed by the Stage/TextureMemoryManager
|
|
289
|
+
// when it deems appropriate based on memory pressure
|
|
211
290
|
}
|
|
212
291
|
}
|
|
213
292
|
}
|
|
214
293
|
|
|
215
294
|
load(): void {
|
|
295
|
+
if (this.maxRetryCount !== null && this.retryCount > this.maxRetryCount) {
|
|
296
|
+
// We've exceeded the max retry count, do not attempt to load again
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
216
300
|
this.txManager.loadTexture(this);
|
|
217
301
|
}
|
|
218
302
|
|
|
@@ -251,6 +335,18 @@ export abstract class Texture extends EventEmitter {
|
|
|
251
335
|
this.ctxTexture?.free();
|
|
252
336
|
}
|
|
253
337
|
|
|
338
|
+
/**
|
|
339
|
+
* Release the texture data and core context texture for this Texture without changing state.
|
|
340
|
+
*
|
|
341
|
+
* @remarks
|
|
342
|
+
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
343
|
+
*/
|
|
344
|
+
release(): void {
|
|
345
|
+
this.ctxTexture?.release();
|
|
346
|
+
this.ctxTexture = undefined;
|
|
347
|
+
this.freeTextureData();
|
|
348
|
+
}
|
|
349
|
+
|
|
254
350
|
/**
|
|
255
351
|
* Destroy the texture.
|
|
256
352
|
*
|
|
@@ -276,7 +372,9 @@ export abstract class Texture extends EventEmitter {
|
|
|
276
372
|
* e.g. ImageData that is downloaded from a URL.
|
|
277
373
|
*/
|
|
278
374
|
freeTextureData(): void {
|
|
279
|
-
|
|
375
|
+
queueMicrotask(() => {
|
|
376
|
+
this.textureData = null;
|
|
377
|
+
});
|
|
280
378
|
}
|
|
281
379
|
|
|
282
380
|
public setState(
|
|
@@ -289,6 +387,9 @@ export abstract class Texture extends EventEmitter {
|
|
|
289
387
|
|
|
290
388
|
let payload: Error | Dimensions | null = null;
|
|
291
389
|
if (state === 'loaded') {
|
|
390
|
+
// Clear any previous error when successfully loading
|
|
391
|
+
this._error = null;
|
|
392
|
+
|
|
292
393
|
if (
|
|
293
394
|
errorOrDimensions !== undefined &&
|
|
294
395
|
'width' in errorOrDimensions === true &&
|
|
@@ -303,6 +404,22 @@ export abstract class Texture extends EventEmitter {
|
|
|
303
404
|
} else if (state === 'failed') {
|
|
304
405
|
this._error = errorOrDimensions as Error;
|
|
305
406
|
payload = this._error;
|
|
407
|
+
|
|
408
|
+
// increment the retry count for the texture
|
|
409
|
+
// this is used to compare against maxRetryCount, if set
|
|
410
|
+
// to determine if we should try loading again
|
|
411
|
+
this.retryCount += 1;
|
|
412
|
+
|
|
413
|
+
queueMicrotask(() => {
|
|
414
|
+
this.release();
|
|
415
|
+
});
|
|
416
|
+
} else if (state === 'loading') {
|
|
417
|
+
// Clear error and reset dimensions when starting to load
|
|
418
|
+
// This ensures stale dimensions from previous loads don't persist
|
|
419
|
+
this._error = null;
|
|
420
|
+
this._dimensions = null;
|
|
421
|
+
} else {
|
|
422
|
+
this._error = null;
|
|
306
423
|
}
|
|
307
424
|
|
|
308
425
|
// emit the new state
|
|
@@ -373,4 +490,16 @@ export abstract class Texture extends EventEmitter {
|
|
|
373
490
|
): Record<string, unknown> {
|
|
374
491
|
return {};
|
|
375
492
|
}
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Retry the texture by resetting retryCount and setting state to 'initial'.
|
|
496
|
+
*
|
|
497
|
+
* @remarks
|
|
498
|
+
* This allows the texture to be loaded again.
|
|
499
|
+
*/
|
|
500
|
+
public retry(): void {
|
|
501
|
+
this.release();
|
|
502
|
+
this.retryCount = 0;
|
|
503
|
+
this.load();
|
|
504
|
+
}
|
|
376
505
|
}
|
|
@@ -8,6 +8,8 @@ import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
|
|
|
8
8
|
import type { IAnimationController } from '../common/IAnimationController.js';
|
|
9
9
|
import { isProductionEnvironment } from '../utils.js';
|
|
10
10
|
import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
|
|
11
|
+
import type { Texture } from '../core/textures/Texture.js';
|
|
12
|
+
import { TextureType } from '../core/textures/Texture.js';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Inspector
|
|
@@ -154,6 +156,22 @@ const gradientColorPropertyMap = [
|
|
|
154
156
|
'colorBr',
|
|
155
157
|
];
|
|
156
158
|
|
|
159
|
+
const textureTypeNames: Record<number, string> = {
|
|
160
|
+
[TextureType.generic]: 'generic',
|
|
161
|
+
[TextureType.color]: 'color',
|
|
162
|
+
[TextureType.image]: 'image',
|
|
163
|
+
[TextureType.noise]: 'noise',
|
|
164
|
+
[TextureType.renderToTexture]: 'renderToTexture',
|
|
165
|
+
[TextureType.subTexture]: 'subTexture',
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
interface TextureMetrics {
|
|
169
|
+
previousState: string;
|
|
170
|
+
loadedCount: number;
|
|
171
|
+
failedCount: number;
|
|
172
|
+
freedCount: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
157
175
|
const knownProperties = new Set<string>([
|
|
158
176
|
...Object.keys(stylePropertyMap),
|
|
159
177
|
...Object.keys(domPropertyMap),
|
|
@@ -161,6 +179,7 @@ const knownProperties = new Set<string>([
|
|
|
161
179
|
'src',
|
|
162
180
|
'parent',
|
|
163
181
|
'data',
|
|
182
|
+
'texture',
|
|
164
183
|
]);
|
|
165
184
|
|
|
166
185
|
export class Inspector {
|
|
@@ -170,6 +189,7 @@ export class Inspector {
|
|
|
170
189
|
private width = 1920;
|
|
171
190
|
private scaleX = 1;
|
|
172
191
|
private scaleY = 1;
|
|
192
|
+
private textureMetrics = new Map<Texture, TextureMetrics>();
|
|
173
193
|
|
|
174
194
|
constructor(canvas: HTMLCanvasElement, settings: RendererMainSettings) {
|
|
175
195
|
if (isProductionEnvironment()) return;
|
|
@@ -284,6 +304,79 @@ export class Inspector {
|
|
|
284
304
|
node: CoreNode | CoreTextNode,
|
|
285
305
|
div: HTMLElement,
|
|
286
306
|
): CoreNode | CoreTextNode {
|
|
307
|
+
// Store texture event listeners for cleanup
|
|
308
|
+
const textureListeners = new Map<
|
|
309
|
+
Texture,
|
|
310
|
+
{
|
|
311
|
+
onLoaded: () => void;
|
|
312
|
+
onFailed: () => void;
|
|
313
|
+
onFreed: () => void;
|
|
314
|
+
}
|
|
315
|
+
>();
|
|
316
|
+
|
|
317
|
+
// Helper function to setup texture event listeners
|
|
318
|
+
const setupTextureListeners = (texture: Texture | null) => {
|
|
319
|
+
// Clean up existing listeners first
|
|
320
|
+
textureListeners.forEach((listeners, oldTexture) => {
|
|
321
|
+
oldTexture.off('loaded', listeners.onLoaded);
|
|
322
|
+
oldTexture.off('failed', listeners.onFailed);
|
|
323
|
+
oldTexture.off('freed', listeners.onFreed);
|
|
324
|
+
});
|
|
325
|
+
textureListeners.clear();
|
|
326
|
+
|
|
327
|
+
// Setup new listeners if texture exists
|
|
328
|
+
if (texture) {
|
|
329
|
+
// Initialize metrics if not exists
|
|
330
|
+
if (!this.textureMetrics.has(texture)) {
|
|
331
|
+
this.textureMetrics.set(texture, {
|
|
332
|
+
previousState: texture.state,
|
|
333
|
+
loadedCount: 0,
|
|
334
|
+
failedCount: 0,
|
|
335
|
+
freedCount: 0,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
const onLoaded = () => {
|
|
340
|
+
const metrics = this.textureMetrics.get(texture);
|
|
341
|
+
if (metrics) {
|
|
342
|
+
metrics.previousState =
|
|
343
|
+
metrics.previousState !== texture.state
|
|
344
|
+
? metrics.previousState
|
|
345
|
+
: 'loading';
|
|
346
|
+
metrics.loadedCount++;
|
|
347
|
+
}
|
|
348
|
+
this.updateTextureAttributes(div, texture);
|
|
349
|
+
};
|
|
350
|
+
const onFailed = () => {
|
|
351
|
+
const metrics = this.textureMetrics.get(texture);
|
|
352
|
+
if (metrics) {
|
|
353
|
+
metrics.previousState =
|
|
354
|
+
metrics.previousState !== texture.state
|
|
355
|
+
? metrics.previousState
|
|
356
|
+
: 'loading';
|
|
357
|
+
metrics.failedCount++;
|
|
358
|
+
}
|
|
359
|
+
this.updateTextureAttributes(div, texture);
|
|
360
|
+
};
|
|
361
|
+
const onFreed = () => {
|
|
362
|
+
const metrics = this.textureMetrics.get(texture);
|
|
363
|
+
if (metrics) {
|
|
364
|
+
metrics.previousState =
|
|
365
|
+
metrics.previousState !== texture.state
|
|
366
|
+
? metrics.previousState
|
|
367
|
+
: texture.state;
|
|
368
|
+
metrics.freedCount++;
|
|
369
|
+
}
|
|
370
|
+
this.updateTextureAttributes(div, texture);
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
texture.on('loaded', onLoaded);
|
|
374
|
+
texture.on('failed', onFailed);
|
|
375
|
+
texture.on('freed', onFreed);
|
|
376
|
+
|
|
377
|
+
textureListeners.set(texture, { onLoaded, onFailed, onFreed });
|
|
378
|
+
}
|
|
379
|
+
};
|
|
287
380
|
// Define traps for each property in knownProperties
|
|
288
381
|
knownProperties.forEach((property) => {
|
|
289
382
|
let originalProp = Object.getOwnPropertyDescriptor(node, property);
|
|
@@ -311,6 +404,15 @@ export class Inspector {
|
|
|
311
404
|
value,
|
|
312
405
|
node.props,
|
|
313
406
|
);
|
|
407
|
+
|
|
408
|
+
// Setup texture event listeners if this is a texture property
|
|
409
|
+
if (property === 'texture') {
|
|
410
|
+
const textureValue =
|
|
411
|
+
value && typeof value === 'object' && 'state' in value
|
|
412
|
+
? (value as Texture)
|
|
413
|
+
: null;
|
|
414
|
+
setupTextureListeners(textureValue);
|
|
415
|
+
}
|
|
314
416
|
},
|
|
315
417
|
configurable: true,
|
|
316
418
|
enumerable: true,
|
|
@@ -320,11 +422,26 @@ export class Inspector {
|
|
|
320
422
|
const originalDestroy = node.destroy;
|
|
321
423
|
Object.defineProperty(node, 'destroy', {
|
|
322
424
|
value: () => {
|
|
425
|
+
// Clean up texture event listeners and metrics
|
|
426
|
+
textureListeners.forEach((listeners, texture) => {
|
|
427
|
+
texture.off('loaded', listeners.onLoaded);
|
|
428
|
+
texture.off('failed', listeners.onFailed);
|
|
429
|
+
texture.off('freed', listeners.onFreed);
|
|
430
|
+
// Clean up metrics for this texture
|
|
431
|
+
this.textureMetrics.delete(texture);
|
|
432
|
+
});
|
|
433
|
+
textureListeners.clear();
|
|
434
|
+
|
|
323
435
|
this.destroyNode(node.id);
|
|
324
436
|
originalDestroy.call(node);
|
|
325
437
|
},
|
|
326
438
|
});
|
|
327
439
|
|
|
440
|
+
// Setup initial texture listeners if node already has a texture
|
|
441
|
+
if (node.texture) {
|
|
442
|
+
setupTextureListeners(node.texture);
|
|
443
|
+
}
|
|
444
|
+
|
|
328
445
|
const originalAnimate = node.animate;
|
|
329
446
|
Object.defineProperty(node, 'animate', {
|
|
330
447
|
value: (
|
|
@@ -353,6 +470,75 @@ export class Inspector {
|
|
|
353
470
|
div?.remove();
|
|
354
471
|
}
|
|
355
472
|
|
|
473
|
+
updateTextureAttributes(div: HTMLElement, texture: Texture) {
|
|
474
|
+
// Update texture state
|
|
475
|
+
div.setAttribute('data-texture-state', texture.state);
|
|
476
|
+
|
|
477
|
+
// Update texture type
|
|
478
|
+
div.setAttribute(
|
|
479
|
+
'data-texture-type',
|
|
480
|
+
textureTypeNames[texture.type] || 'unknown',
|
|
481
|
+
);
|
|
482
|
+
|
|
483
|
+
// Update texture dimensions if available
|
|
484
|
+
if (texture.dimensions) {
|
|
485
|
+
div.setAttribute('data-texture-width', String(texture.dimensions.width));
|
|
486
|
+
div.setAttribute(
|
|
487
|
+
'data-texture-height',
|
|
488
|
+
String(texture.dimensions.height),
|
|
489
|
+
);
|
|
490
|
+
} else {
|
|
491
|
+
div.removeAttribute('data-texture-width');
|
|
492
|
+
div.removeAttribute('data-texture-height');
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// Update renderable owners count
|
|
496
|
+
div.setAttribute(
|
|
497
|
+
'data-texture-owners',
|
|
498
|
+
String(texture.renderableOwners.length),
|
|
499
|
+
);
|
|
500
|
+
|
|
501
|
+
// Update retry count
|
|
502
|
+
div.setAttribute('data-texture-retry-count', String(texture.retryCount));
|
|
503
|
+
|
|
504
|
+
// Update max retry count if available
|
|
505
|
+
if (texture.maxRetryCount !== null) {
|
|
506
|
+
div.setAttribute(
|
|
507
|
+
'data-texture-max-retry-count',
|
|
508
|
+
String(texture.maxRetryCount),
|
|
509
|
+
);
|
|
510
|
+
} else {
|
|
511
|
+
div.removeAttribute('data-texture-max-retry-count');
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// Update metrics if available
|
|
515
|
+
const metrics = this.textureMetrics.get(texture);
|
|
516
|
+
if (metrics) {
|
|
517
|
+
div.setAttribute('data-texture-previous-state', metrics.previousState);
|
|
518
|
+
div.setAttribute(
|
|
519
|
+
'data-texture-loaded-count',
|
|
520
|
+
String(metrics.loadedCount),
|
|
521
|
+
);
|
|
522
|
+
div.setAttribute(
|
|
523
|
+
'data-texture-failed-count',
|
|
524
|
+
String(metrics.failedCount),
|
|
525
|
+
);
|
|
526
|
+
div.setAttribute('data-texture-freed-count', String(metrics.freedCount));
|
|
527
|
+
} else {
|
|
528
|
+
div.removeAttribute('data-texture-previous-state');
|
|
529
|
+
div.removeAttribute('data-texture-loaded-count');
|
|
530
|
+
div.removeAttribute('data-texture-failed-count');
|
|
531
|
+
div.removeAttribute('data-texture-freed-count');
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// Update error information if present
|
|
535
|
+
if (texture.error) {
|
|
536
|
+
div.setAttribute('data-texture-error', texture.error.message);
|
|
537
|
+
} else {
|
|
538
|
+
div.removeAttribute('data-texture-error');
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
356
542
|
updateNodeProperty(
|
|
357
543
|
div: HTMLElement,
|
|
358
544
|
property: keyof CoreNodeProps | keyof CoreTextNodeProps,
|
|
@@ -413,6 +599,23 @@ export class Inspector {
|
|
|
413
599
|
return;
|
|
414
600
|
}
|
|
415
601
|
|
|
602
|
+
// special case for texture information
|
|
603
|
+
if (property === 'texture') {
|
|
604
|
+
if (value && typeof value === 'object' && 'state' in value) {
|
|
605
|
+
const texture = value as Texture;
|
|
606
|
+
this.updateTextureAttributes(div, texture);
|
|
607
|
+
} else {
|
|
608
|
+
// Remove all texture attributes when texture is null
|
|
609
|
+
div.removeAttribute('data-texture-state');
|
|
610
|
+
div.removeAttribute('data-texture-type');
|
|
611
|
+
div.removeAttribute('data-texture-width');
|
|
612
|
+
div.removeAttribute('data-texture-height');
|
|
613
|
+
div.removeAttribute('data-texture-owners');
|
|
614
|
+
div.removeAttribute('data-texture-error');
|
|
615
|
+
}
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
|
|
416
619
|
// CSS mappable attribute
|
|
417
620
|
if (stylePropertyMap[property]) {
|
|
418
621
|
const mappedStyleResponse = stylePropertyMap[property]?.(value);
|
package/src/main-api/Renderer.ts
CHANGED
|
@@ -739,8 +739,6 @@ export class RendererMain extends EventEmitter {
|
|
|
739
739
|
/**
|
|
740
740
|
* Cleanup textures that are not being used
|
|
741
741
|
*
|
|
742
|
-
* @param aggressive - If true, will cleanup all textures, regardless of render status
|
|
743
|
-
*
|
|
744
742
|
* @remarks
|
|
745
743
|
* This can be used to free up GFX memory used by textures that are no longer
|
|
746
744
|
* being displayed.
|
|
@@ -754,8 +752,8 @@ export class RendererMain extends EventEmitter {
|
|
|
754
752
|
* **NOTE3**: This will not cleanup textures that are marked as `preventCleanup`.
|
|
755
753
|
* **NOTE4**: This has nothing to do with the garbage collection of JavaScript.
|
|
756
754
|
*/
|
|
757
|
-
cleanup(
|
|
758
|
-
this.stage.cleanup(
|
|
755
|
+
cleanup() {
|
|
756
|
+
this.stage.cleanup();
|
|
759
757
|
}
|
|
760
758
|
|
|
761
759
|
/**
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
|
|
2
|
-
export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
|
|
3
|
-
export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
|
|
4
|
-
export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
|
|
5
|
-
export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
|
|
6
|
-
export { Border } from '../src/core/shaders/canvas/Border.js';
|
|
7
|
-
export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
|
|
8
|
-
export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
|
|
9
|
-
export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
|
|
10
|
-
export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC
|
|
3
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License.
|
|
5
|
-
* You may obtain a copy of the License at
|
|
6
|
-
*
|
|
7
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
*
|
|
9
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
* See the License for the specific language governing permissions and
|
|
13
|
-
* limitations under the License.
|
|
14
|
-
*
|
|
15
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
-
*/
|
|
17
|
-
export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
|
|
18
|
-
export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
|
|
19
|
-
export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
|
|
20
|
-
export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
|
|
21
|
-
export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
|
|
22
|
-
export { Border } from '../src/core/shaders/canvas/Border.js';
|
|
23
|
-
export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
|
|
24
|
-
export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
|
|
25
|
-
export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
|
|
26
|
-
export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
|
|
27
|
-
//# sourceMappingURL=canvas-shaders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-shaders.js","sourceRoot":"","sources":["../../exports/canvas-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,kDAAkD,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
|
|
2
|
-
export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
|
|
3
|
-
export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
|
|
4
|
-
export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
|
|
5
|
-
export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
|
|
6
|
-
export { Border } from '../src/core/shaders/webgl/Border.js';
|
|
7
|
-
export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
|
|
8
|
-
export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
|
|
9
|
-
export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
|
|
10
|
-
export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
|
|
11
|
-
export { Default } from '../src/core/shaders/webgl/Default.js';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC
|
|
3
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License.
|
|
5
|
-
* You may obtain a copy of the License at
|
|
6
|
-
*
|
|
7
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
*
|
|
9
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
* See the License for the specific language governing permissions and
|
|
13
|
-
* limitations under the License.
|
|
14
|
-
*
|
|
15
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
-
*/
|
|
17
|
-
export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
|
|
18
|
-
export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
|
|
19
|
-
export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
|
|
20
|
-
export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
|
|
21
|
-
export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
|
|
22
|
-
export { Border } from '../src/core/shaders/webgl/Border.js';
|
|
23
|
-
export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
|
|
24
|
-
export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
|
|
25
|
-
export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
|
|
26
|
-
export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
|
|
27
|
-
export { Default } from '../src/core/shaders/webgl/Default.js';
|
|
28
|
-
//# sourceMappingURL=webgl-shaders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-shaders.js","sourceRoot":"","sources":["../../exports/webgl-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,cAAc,gDAAgD,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { type Stage } from '../Stage.js';
|
|
2
|
-
export declare abstract class Platform {
|
|
3
|
-
/**
|
|
4
|
-
* Creates a new canvas element.
|
|
5
|
-
* @returns The created HTMLCanvasElement.
|
|
6
|
-
*/
|
|
7
|
-
abstract createCanvas(): HTMLCanvasElement;
|
|
8
|
-
/**
|
|
9
|
-
* Get a DOM element by ID
|
|
10
|
-
* @returns The DOM element (or null)
|
|
11
|
-
*/
|
|
12
|
-
abstract getElementById(id: string): HTMLElement | null;
|
|
13
|
-
/**
|
|
14
|
-
* Starts the main rendering loop, calling the provided update function every frame.
|
|
15
|
-
* @param Stage - The stage for rendering
|
|
16
|
-
*/
|
|
17
|
-
abstract startLoop(stage: Stage): void;
|
|
18
|
-
/**
|
|
19
|
-
* Abstracted createImageBitmap method.
|
|
20
|
-
* @param blob - The image source to create the ImageBitmap from.
|
|
21
|
-
* @param sxOrOptions - The source rectangle x coordinate or ImageBitmapOptions.
|
|
22
|
-
* @param sy - The source rectangle y coordinate.
|
|
23
|
-
* @param sw - The source rectangle width.
|
|
24
|
-
* @param sh - The source rectangle height.
|
|
25
|
-
* @param options - The ImageBitmapOptions.
|
|
26
|
-
* @returns A promise that resolves with the created ImageBitmap.
|
|
27
|
-
*/
|
|
28
|
-
abstract createImageBitmap(blob: ImageBitmapSource): Promise<ImageBitmap>;
|
|
29
|
-
abstract createImageBitmap(blob: ImageBitmapSource, options: ImageBitmapOptions): Promise<ImageBitmap>;
|
|
30
|
-
abstract createImageBitmap(blob: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number): Promise<ImageBitmap>;
|
|
31
|
-
abstract createImageBitmap(blob: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options: ImageBitmapOptions): Promise<ImageBitmap>;
|
|
32
|
-
/**
|
|
33
|
-
* Retrieves the current timestamp.
|
|
34
|
-
* @returns The current timestamp.
|
|
35
|
-
*/
|
|
36
|
-
abstract getTimeStamp(): number;
|
|
37
|
-
}
|