@lightningjs/renderer 2.3.2 → 2.5.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 (157) hide show
  1. package/dist/exports/core-api.d.ts +74 -0
  2. package/dist/exports/core-api.js +96 -0
  3. package/dist/exports/core-api.js.map +1 -0
  4. package/dist/exports/main-api.d.ts +30 -0
  5. package/dist/exports/main-api.js +45 -0
  6. package/dist/exports/main-api.js.map +1 -0
  7. package/dist/src/common/CommonTypes.d.ts +6 -0
  8. package/dist/src/core/CoreExtension.d.ts +12 -0
  9. package/dist/src/core/CoreExtension.js +29 -0
  10. package/dist/src/core/CoreExtension.js.map +1 -0
  11. package/dist/src/core/CoreNode.js +37 -39
  12. package/dist/src/core/CoreNode.js.map +1 -1
  13. package/dist/src/core/Stage.d.ts +1 -0
  14. package/dist/src/core/Stage.js +4 -1
  15. package/dist/src/core/Stage.js.map +1 -1
  16. package/dist/src/core/animations/CoreAnimation.d.ts +1 -0
  17. package/dist/src/core/animations/CoreAnimation.js +6 -0
  18. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  19. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  20. package/dist/src/core/animations/CoreAnimationController.js +6 -0
  21. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  22. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +1 -1
  23. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -1
  24. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  25. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +11 -4
  26. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
  27. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +94 -98
  28. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  29. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +4 -0
  30. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  31. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +5 -1
  32. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  33. package/dist/src/core/text-rendering/TrFontManager.d.ts +1 -1
  34. package/dist/src/core/text-rendering/TrFontManager.js +2 -2
  35. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -1
  36. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -1
  37. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -6
  38. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  39. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +18 -10
  40. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  41. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +4 -4
  42. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  43. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +3 -1
  44. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  45. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +2 -1
  46. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -1
  47. package/dist/src/core/textures/ColorTexture.d.ts +2 -1
  48. package/dist/src/core/textures/ColorTexture.js +2 -1
  49. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  50. package/dist/src/core/textures/ImageTexture.d.ts +2 -1
  51. package/dist/src/core/textures/ImageTexture.js +4 -3
  52. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  53. package/dist/src/core/textures/NoiseTexture.d.ts +2 -1
  54. package/dist/src/core/textures/NoiseTexture.js +2 -1
  55. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  56. package/dist/src/core/textures/RenderTexture.d.ts +2 -1
  57. package/dist/src/core/textures/RenderTexture.js +2 -1
  58. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  59. package/dist/src/core/textures/SubTexture.d.ts +2 -1
  60. package/dist/src/core/textures/SubTexture.js +2 -1
  61. package/dist/src/core/textures/SubTexture.js.map +1 -1
  62. package/dist/src/core/textures/Texture.d.ts +9 -0
  63. package/dist/src/core/textures/Texture.js +10 -0
  64. package/dist/src/core/textures/Texture.js.map +1 -1
  65. package/dist/src/core/utils.d.ts +1 -1
  66. package/dist/src/main-api/ICoreDriver.d.ts +24 -0
  67. package/dist/src/main-api/ICoreDriver.js +20 -0
  68. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  69. package/dist/src/main-api/Renderer.js +1 -0
  70. package/dist/src/main-api/Renderer.js.map +1 -1
  71. package/dist/src/main-api/RendererMain.d.ts +378 -0
  72. package/dist/src/main-api/RendererMain.js +367 -0
  73. package/dist/src/main-api/RendererMain.js.map +1 -0
  74. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  75. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  76. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  77. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  78. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  79. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  80. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  81. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  82. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  83. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +21 -0
  84. package/dist/src/render-drivers/main/MainCoreDriver.js +115 -0
  85. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  86. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +101 -0
  87. package/dist/src/render-drivers/main/MainOnlyNode.js +425 -0
  88. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  89. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  90. package/dist/src/render-drivers/main/MainOnlyTextNode.js +204 -0
  91. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  92. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +93 -0
  93. package/dist/src/render-drivers/threadx/NodeStruct.js +290 -0
  94. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  95. package/dist/src/render-drivers/threadx/SharedNode.d.ts +40 -0
  96. package/dist/src/render-drivers/threadx/SharedNode.js +61 -0
  97. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  98. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  99. package/dist/src/render-drivers/threadx/TextNodeStruct.js +203 -0
  100. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  101. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +25 -0
  102. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +232 -0
  103. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  104. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +24 -0
  105. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +113 -0
  106. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  107. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +46 -0
  108. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +160 -0
  109. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  110. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  111. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  112. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  113. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  114. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  115. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  116. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  117. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +184 -0
  118. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  119. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  120. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +109 -0
  121. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  122. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  123. package/dist/src/render-drivers/threadx/worker/renderer.js +147 -0
  124. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  125. package/dist/src/render-drivers/utils.d.ts +12 -0
  126. package/dist/src/render-drivers/utils.js +74 -0
  127. package/dist/src/render-drivers/utils.js.map +1 -0
  128. package/dist/src/utils.js +1 -1
  129. package/dist/src/utils.js.map +1 -1
  130. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  131. package/dist/tsconfig.tsbuildinfo +1 -0
  132. package/package.json +1 -1
  133. package/src/common/CommonTypes.ts +7 -0
  134. package/src/core/CoreNode.ts +38 -55
  135. package/src/core/Stage.ts +6 -1
  136. package/src/core/animations/CoreAnimation.ts +7 -0
  137. package/src/core/animations/CoreAnimationController.ts +12 -0
  138. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +7 -1
  139. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +13 -4
  140. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +122 -136
  141. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +7 -0
  142. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +8 -1
  143. package/src/core/text-rendering/TrFontManager.ts +3 -1
  144. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -1
  145. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +7 -7
  146. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +28 -14
  147. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +8 -6
  148. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +5 -1
  149. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +2 -1
  150. package/src/core/textures/ColorTexture.ts +3 -1
  151. package/src/core/textures/ImageTexture.ts +5 -3
  152. package/src/core/textures/NoiseTexture.ts +3 -1
  153. package/src/core/textures/RenderTexture.ts +3 -1
  154. package/src/core/textures/SubTexture.ts +3 -0
  155. package/src/core/textures/Texture.ts +11 -0
  156. package/src/main-api/Renderer.ts +1 -0
  157. package/src/utils.ts +1 -1
@@ -0,0 +1,184 @@
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 { SharedNode } from '../SharedNode.js';
20
+ import { ThreadX } from '@lightningjs/threadx';
21
+ import { assertTruthy } from '../../../utils.js';
22
+ import { CoreAnimation } from '../../../core/animations/CoreAnimation.js';
23
+ import { CoreAnimationController } from '../../../core/animations/CoreAnimationController.js';
24
+ import { CoreNode } from '../../../core/CoreNode.js';
25
+ export class ThreadXRendererNode extends SharedNode {
26
+ stage;
27
+ coreNode;
28
+ _parent = null;
29
+ _children = [];
30
+ texture = null;
31
+ animationControllers = new Map();
32
+ constructor(stage, sharedNodeStruct, coreNode, extendedCurProps) {
33
+ super(sharedNodeStruct, extendedCurProps);
34
+ this.stage = stage;
35
+ // This Proxy makes sure properties on the coreNode that an animation
36
+ // changes are also updated on the shared node.
37
+ // TODO: Improve this pattern because its ugly!!!
38
+ this.coreNode = new Proxy(coreNode || this.createCoreNode(stage, sharedNodeStruct), {
39
+ set: (target, prop, value) => {
40
+ // Only set the numeric properties on the shared node.
41
+ if (prop !== 'parent' && prop !== 'texture' && prop !== 'shader') {
42
+ Reflect.set(this, prop, value);
43
+ }
44
+ return Reflect.set(target, prop, value);
45
+ },
46
+ });
47
+ // Set up parent
48
+ const parent = ThreadX.instance.getSharedObjectById(sharedNodeStruct.parentId);
49
+ assertTruthy(parent instanceof ThreadXRendererNode || parent === null);
50
+ this.parent = parent;
51
+ // Create inbound event listeners
52
+ // TOOD: Make sure event listeners are removed when the node is destroyed.
53
+ this.on('createAnimation', (target, { id, props, settings }) => {
54
+ const animation = new CoreAnimation(this.coreNode, props, settings);
55
+ animation.on('animating', () => {
56
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
57
+ this.emit('animationAnimating', {
58
+ id: id,
59
+ });
60
+ });
61
+ animation.on('finished', () => {
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
63
+ this.emit('animationFinished', {
64
+ id: id,
65
+ loop: settings.loop,
66
+ });
67
+ });
68
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
69
+ const controller = new CoreAnimationController(this.stage.animationManager, animation);
70
+ this.animationControllers.set(id, controller);
71
+ });
72
+ this.on('destroyAnimation', (target, { id }) => {
73
+ this.animationControllers.delete(id);
74
+ });
75
+ this.on('startAnimation', (target, { id }) => {
76
+ this.animationControllers.get(id)?.start();
77
+ });
78
+ this.on('stopAnimation', (target, { id }) => {
79
+ this.animationControllers.get(id)?.stop();
80
+ });
81
+ this.on('pauseAnimation', (target, { id }) => {
82
+ this.animationControllers.get(id)?.pause();
83
+ });
84
+ this.on('loadTexture', (target, textureDesc) => {
85
+ this.coreNode.loadTexture(textureDesc.txType, textureDesc.props, textureDesc.options);
86
+ });
87
+ this.on('loadShader', (target, shaderDesc) => {
88
+ this.coreNode.loadShader(shaderDesc.shType, shaderDesc.props);
89
+ });
90
+ this.on('unloadTexture', (target) => {
91
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
92
+ this.coreNode.unloadTexture();
93
+ });
94
+ // Forward on CoreNode events
95
+ this.coreNode.on('loaded', (target, payload) => {
96
+ this.emit('loaded', payload);
97
+ });
98
+ this.coreNode.on('failed', (target, payload) => {
99
+ this.emit('failed', payload);
100
+ });
101
+ this.coreNode.on('freed', (target, payload) => {
102
+ this.emit('freed', payload);
103
+ });
104
+ }
105
+ onPropertyChange(propName, newValue, oldValue) {
106
+ if (propName === 'parentId') {
107
+ const parent = ThreadX.instance.getSharedObjectById(newValue);
108
+ assertTruthy(parent instanceof ThreadXRendererNode || parent === null);
109
+ this.parent = parent;
110
+ return;
111
+ }
112
+ else {
113
+ // @ts-expect-error Ignore readonly assignment errors
114
+ this.coreNode[propName] =
115
+ newValue;
116
+ }
117
+ }
118
+ //#region Parent/Child Props
119
+ get parent() {
120
+ return this._parent;
121
+ }
122
+ set parent(newParent) {
123
+ const oldParent = this._parent;
124
+ this._parent = newParent;
125
+ this.coreNode.parent = newParent?.coreNode ?? null;
126
+ this.parentId = newParent?.id ?? 0;
127
+ if (oldParent) {
128
+ const index = oldParent.children.indexOf(this);
129
+ assertTruthy(index !== -1, "ThreadXRendererNode.parent: Node not found in old parent's children!");
130
+ oldParent.children.splice(index, 1);
131
+ }
132
+ if (newParent) {
133
+ newParent.children.push(this);
134
+ }
135
+ }
136
+ get children() {
137
+ return this._children;
138
+ }
139
+ //#endregion Parent/Child Props
140
+ createCoreNode(stage, sharedNodeStruct) {
141
+ const parent = ThreadX.instance.getSharedObjectById(sharedNodeStruct.parentId);
142
+ assertTruthy(parent instanceof ThreadXRendererNode || parent === null);
143
+ const node = new CoreNode(stage, {
144
+ id: sharedNodeStruct.id,
145
+ x: sharedNodeStruct.x,
146
+ y: sharedNodeStruct.y,
147
+ width: sharedNodeStruct.width,
148
+ height: sharedNodeStruct.height,
149
+ alpha: sharedNodeStruct.alpha,
150
+ autosize: sharedNodeStruct.autosize,
151
+ clipping: sharedNodeStruct.clipping,
152
+ color: sharedNodeStruct.color,
153
+ colorTop: sharedNodeStruct.colorTop,
154
+ colorBottom: sharedNodeStruct.colorBottom,
155
+ colorLeft: sharedNodeStruct.colorLeft,
156
+ colorRight: sharedNodeStruct.colorRight,
157
+ colorTl: sharedNodeStruct.colorTl,
158
+ colorTr: sharedNodeStruct.colorTr,
159
+ colorBl: sharedNodeStruct.colorBl,
160
+ colorBr: sharedNodeStruct.colorBr,
161
+ zIndex: sharedNodeStruct.zIndex,
162
+ zIndexLocked: sharedNodeStruct.zIndexLocked,
163
+ scaleX: sharedNodeStruct.scaleX,
164
+ scaleY: sharedNodeStruct.scaleY,
165
+ mount: sharedNodeStruct.mount,
166
+ mountX: sharedNodeStruct.mountX,
167
+ mountY: sharedNodeStruct.mountY,
168
+ pivot: sharedNodeStruct.pivot,
169
+ pivotX: sharedNodeStruct.pivotX,
170
+ pivotY: sharedNodeStruct.pivotY,
171
+ rotation: sharedNodeStruct.rotation,
172
+ rtt: sharedNodeStruct.rtt,
173
+ // These are passed in via message handlers
174
+ shader: null,
175
+ shaderProps: null,
176
+ texture: null,
177
+ textureOptions: null,
178
+ // Setup the parent after
179
+ parent: null,
180
+ });
181
+ return node;
182
+ }
183
+ }
184
+ //# sourceMappingURL=ThreadXRendererNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadXRendererNode.js","sourceRoot":"","sources":["../../../../../src/render-drivers/threadx/worker/ThreadXRendererNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { CoreTextNode } from '../../../core/CoreTextNode.js';
2
+ import type { Stage } from '../../../core/Stage.js';
3
+ import type { TextNodeStruct, TextNodeStructWritableProps } from '../TextNodeStruct.js';
4
+ import { ThreadXRendererNode } from './ThreadXRendererNode.js';
5
+ export declare class ThreadXRendererTextNode extends ThreadXRendererNode {
6
+ coreNode: CoreTextNode;
7
+ z$__type__Props: TextNodeStructWritableProps & ThreadXRendererNode['z$__type__Props'];
8
+ constructor(stage: Stage, sharedNodeStruct: TextNodeStruct);
9
+ text: TextNodeStructWritableProps['text'];
10
+ textRendererOverride: TextNodeStructWritableProps['textRendererOverride'];
11
+ fontSize: TextNodeStructWritableProps['fontSize'];
12
+ fontFamily: TextNodeStructWritableProps['fontFamily'];
13
+ fontWeight: TextNodeStructWritableProps['fontWeight'];
14
+ fontStretch: TextNodeStructWritableProps['fontStretch'];
15
+ fontStyle: TextNodeStructWritableProps['fontStyle'];
16
+ lineHeight: TextNodeStructWritableProps['lineHeight'];
17
+ maxLines: TextNodeStructWritableProps['maxLines'];
18
+ textBaseline: TextNodeStructWritableProps['textBaseline'];
19
+ verticalAlign: TextNodeStructWritableProps['verticalAlign'];
20
+ overflowSuffix: TextNodeStructWritableProps['overflowSuffix'];
21
+ contain: TextNodeStructWritableProps['contain'];
22
+ letterSpacing: TextNodeStructWritableProps['letterSpacing'];
23
+ offsetY: TextNodeStructWritableProps['offsetY'];
24
+ textAlign: TextNodeStructWritableProps['textAlign'];
25
+ scrollable: TextNodeStructWritableProps['scrollable'];
26
+ scrollY: TextNodeStructWritableProps['scrollY'];
27
+ }
@@ -0,0 +1,109 @@
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 { CoreTextNode } from '../../../core/CoreTextNode.js';
20
+ import { ThreadXRendererNode } from './ThreadXRendererNode.js';
21
+ export class ThreadXRendererTextNode extends ThreadXRendererNode {
22
+ constructor(stage, sharedNodeStruct) {
23
+ super(stage, sharedNodeStruct, new CoreTextNode(stage, {
24
+ id: sharedNodeStruct.id,
25
+ // It doesn't matter what these are initially. They will be reset
26
+ // appropriately via the onPropertyChange() calls below and in the
27
+ // ThreadXRendererNode constructor.
28
+ x: sharedNodeStruct.x,
29
+ y: sharedNodeStruct.y,
30
+ width: sharedNodeStruct.width,
31
+ height: sharedNodeStruct.height,
32
+ alpha: sharedNodeStruct.alpha,
33
+ autosize: sharedNodeStruct.autosize,
34
+ clipping: sharedNodeStruct.clipping,
35
+ color: sharedNodeStruct.color,
36
+ colorTop: sharedNodeStruct.colorTop,
37
+ colorBottom: sharedNodeStruct.colorBottom,
38
+ colorLeft: sharedNodeStruct.colorLeft,
39
+ colorRight: sharedNodeStruct.colorRight,
40
+ colorTl: sharedNodeStruct.colorTl,
41
+ colorTr: sharedNodeStruct.colorTr,
42
+ colorBl: sharedNodeStruct.colorBl,
43
+ colorBr: sharedNodeStruct.colorBr,
44
+ zIndex: sharedNodeStruct.zIndex,
45
+ zIndexLocked: sharedNodeStruct.zIndexLocked,
46
+ mount: sharedNodeStruct.mount,
47
+ mountX: sharedNodeStruct.mountX,
48
+ mountY: sharedNodeStruct.mountY,
49
+ pivot: sharedNodeStruct.pivot,
50
+ pivotX: sharedNodeStruct.pivotX,
51
+ pivotY: sharedNodeStruct.pivotY,
52
+ scaleX: sharedNodeStruct.scaleX,
53
+ scaleY: sharedNodeStruct.scaleY,
54
+ rotation: sharedNodeStruct.rotation,
55
+ rtt: sharedNodeStruct.rtt,
56
+ // These are passed in via message handlers
57
+ shader: null,
58
+ shaderProps: null,
59
+ texture: null,
60
+ textureOptions: null,
61
+ // Setup the parent after
62
+ parent: null,
63
+ // Text properties
64
+ text: sharedNodeStruct.text,
65
+ textRendererOverride: sharedNodeStruct.textRendererOverride,
66
+ fontSize: sharedNodeStruct.fontSize,
67
+ fontFamily: sharedNodeStruct.fontFamily,
68
+ fontWeight: sharedNodeStruct.fontWeight,
69
+ fontStretch: sharedNodeStruct.fontStretch,
70
+ fontStyle: sharedNodeStruct.fontStyle,
71
+ lineHeight: sharedNodeStruct.lineHeight,
72
+ maxLines: sharedNodeStruct.maxLines,
73
+ textBaseline: sharedNodeStruct.textBaseline,
74
+ verticalAlign: sharedNodeStruct.verticalAlign,
75
+ overflowSuffix: sharedNodeStruct.overflowSuffix,
76
+ contain: sharedNodeStruct.contain,
77
+ letterSpacing: sharedNodeStruct.letterSpacing,
78
+ offsetY: sharedNodeStruct.offsetY,
79
+ textAlign: sharedNodeStruct.textAlign,
80
+ scrollable: sharedNodeStruct.scrollable,
81
+ scrollY: sharedNodeStruct.scrollY,
82
+ debug: {},
83
+ }), {
84
+ text: sharedNodeStruct.text,
85
+ textRendererOverride: sharedNodeStruct.textRendererOverride,
86
+ fontSize: sharedNodeStruct.fontSize,
87
+ fontFamily: sharedNodeStruct.fontFamily,
88
+ fontWeight: sharedNodeStruct.fontWeight,
89
+ fontStretch: sharedNodeStruct.fontStretch,
90
+ fontStyle: sharedNodeStruct.fontStyle,
91
+ lineHeight: sharedNodeStruct.lineHeight,
92
+ maxLines: sharedNodeStruct.maxLines,
93
+ textBaseline: sharedNodeStruct.textBaseline,
94
+ verticalAlign: sharedNodeStruct.verticalAlign,
95
+ overflowSuffix: sharedNodeStruct.overflowSuffix,
96
+ contain: sharedNodeStruct.contain,
97
+ letterSpacing: sharedNodeStruct.letterSpacing,
98
+ offsetY: sharedNodeStruct.offsetY,
99
+ textAlign: sharedNodeStruct.textAlign,
100
+ scrollable: sharedNodeStruct.scrollable,
101
+ scrollY: sharedNodeStruct.scrollY,
102
+ });
103
+ // Forward on CoreNode events
104
+ this.on('debug', (target, debug) => {
105
+ this.coreNode.debug = debug;
106
+ });
107
+ }
108
+ }
109
+ //# sourceMappingURL=ThreadXRendererTextNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadXRendererTextNode.js","sourceRoot":"","sources":["../../../../../src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
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 { ThreadX, BufferStruct } from '@lightningjs/threadx';
20
+ import { NodeStruct } from '../NodeStruct.js';
21
+ import { ThreadXRendererNode } from './ThreadXRendererNode.js';
22
+ import { Stage } from '../../../core/Stage.js';
23
+ import { assertTruthy } from '../../../utils.js';
24
+ import { isThreadXRendererMessage, } from '../ThreadXRendererMessage.js';
25
+ import { TextNodeStruct } from '../TextNodeStruct.js';
26
+ import { ThreadXRendererTextNode } from './ThreadXRendererTextNode.js';
27
+ import { loadCoreExtension } from '../../utils.js';
28
+ let canvas = null;
29
+ let stage = null;
30
+ let rootNode = null;
31
+ const threadx = ThreadX.init({
32
+ workerId: 2,
33
+ workerName: 'renderer',
34
+ sharedObjectFactory(buffer) {
35
+ const typeId = BufferStruct.extractTypeId(buffer);
36
+ if (typeId === NodeStruct.typeId) {
37
+ const nodeStruct = new NodeStruct(buffer);
38
+ nodeStruct.parentId = nodeStruct.parentId || 0;
39
+ const node = nodeStruct.lock(() => {
40
+ assertTruthy(stage);
41
+ return new ThreadXRendererNode(stage, nodeStruct);
42
+ });
43
+ return node;
44
+ }
45
+ else if (typeId === TextNodeStruct.typeId) {
46
+ const nodeStruct = new TextNodeStruct(buffer);
47
+ nodeStruct.parentId = nodeStruct.parentId || 0;
48
+ const node = nodeStruct.lock(() => {
49
+ assertTruthy(stage);
50
+ return new ThreadXRendererTextNode(stage, nodeStruct);
51
+ });
52
+ return node;
53
+ }
54
+ return null;
55
+ },
56
+ async onMessage(message) {
57
+ if (isThreadXRendererMessage('init', message)) {
58
+ canvas = message.canvas;
59
+ const nodeStruct = new NodeStruct();
60
+ stage = new Stage({
61
+ rootId: nodeStruct.id,
62
+ appWidth: message.appWidth,
63
+ appHeight: message.appHeight,
64
+ txMemByteThreshold: message.txMemByteThreshold,
65
+ boundsMargin: message.boundsMargin,
66
+ deviceLogicalPixelRatio: message.deviceLogicalPixelRatio,
67
+ devicePhysicalPixelRatio: message.devicePhysicalPixelRatio,
68
+ clearColor: message.clearColor,
69
+ canvas,
70
+ fpsUpdateInterval: message.fpsUpdateInterval,
71
+ enableContextSpy: message.enableContextSpy,
72
+ numImageWorkers: message.numImageWorkers,
73
+ renderMode: 'webgl',
74
+ debug: {
75
+ monitorTextureCache: false,
76
+ },
77
+ });
78
+ const coreRootNode = stage.root;
79
+ // We must initialize the root NodeStruct with the same properties from
80
+ // the CoreNode that the Stage created.
81
+ Object.assign(nodeStruct, {
82
+ x: coreRootNode.x,
83
+ y: coreRootNode.y,
84
+ width: coreRootNode.width,
85
+ height: coreRootNode.height,
86
+ alpha: coreRootNode.alpha,
87
+ autosize: coreRootNode.autosize,
88
+ clipping: coreRootNode.clipping,
89
+ color: coreRootNode.color,
90
+ colorTop: coreRootNode.colorTop,
91
+ colorRight: coreRootNode.colorRight,
92
+ colorBottom: coreRootNode.colorBottom,
93
+ colorLeft: coreRootNode.colorLeft,
94
+ colorTl: coreRootNode.colorTl,
95
+ colorTr: coreRootNode.colorTr,
96
+ colorBr: coreRootNode.colorBr,
97
+ colorBl: coreRootNode.colorBl,
98
+ parentId: coreRootNode.parent?.id ?? 0,
99
+ zIndex: coreRootNode.zIndex,
100
+ zIndexLocked: coreRootNode.zIndexLocked,
101
+ scaleX: coreRootNode.scaleX,
102
+ scaleY: coreRootNode.scaleY,
103
+ mount: coreRootNode.mount,
104
+ mountX: coreRootNode.mountX,
105
+ mountY: coreRootNode.mountY,
106
+ pivot: coreRootNode.pivot,
107
+ pivotX: coreRootNode.pivotX,
108
+ pivotY: coreRootNode.pivotY,
109
+ rotation: coreRootNode.rotation,
110
+ rtt: coreRootNode.rtt,
111
+ });
112
+ // Share the root node that was created by the Stage with the main worker.
113
+ rootNode = new ThreadXRendererNode(stage, nodeStruct, coreRootNode);
114
+ await threadx.shareObjects('parent', [rootNode]);
115
+ // Load the Core Extension Module if one was specified.
116
+ if (message.coreExtensionModule) {
117
+ await loadCoreExtension(message.coreExtensionModule, stage);
118
+ }
119
+ // Forward FPS updates to the main worker.
120
+ stage.on('fpsUpdate', ((stage, fpsData) => {
121
+ threadx.sendMessage('parent', {
122
+ type: 'fpsUpdate',
123
+ fpsData: fpsData,
124
+ });
125
+ }));
126
+ // Return its ID so the main worker can retrieve it from the shared object
127
+ // store.
128
+ return rootNode.id;
129
+ }
130
+ else if (isThreadXRendererMessage('releaseTexture', message)) {
131
+ assertTruthy(stage);
132
+ const txManager = stage.txManager;
133
+ assertTruthy(txManager);
134
+ txManager.removeTextureIdFromCache(message.textureDescId);
135
+ }
136
+ },
137
+ onObjectShared(object) {
138
+ // TBD
139
+ },
140
+ onBeforeObjectForgotten(object) {
141
+ if (object instanceof ThreadXRendererNode) {
142
+ object.parent = null;
143
+ object.destroy();
144
+ }
145
+ },
146
+ });
147
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../../../src/render-drivers/threadx/worker/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CoreExtension } from '../../exports/core-api.js';
2
+ import type { Stage } from '../core/Stage.js';
3
+ import type { CustomDataMap } from '../main-api/INode.js';
4
+ /**
5
+ * Type guard that checks if a Class extends CoreExtension.
6
+ *
7
+ * @param Class
8
+ * @returns
9
+ */
10
+ export declare function classExtendsCoreExtension(Class: unknown): Class is new () => CoreExtension;
11
+ export declare function loadCoreExtension(coreExtensionModule: string, stage: Stage): Promise<void>;
12
+ export declare function santizeCustomDataMap(d: CustomDataMap): CustomDataMap;
@@ -0,0 +1,74 @@
1
+ import { CoreExtension } from '../../exports/core-api.js';
2
+ /**
3
+ * Type guard that checks if a Class extends CoreExtension.
4
+ *
5
+ * @param Class
6
+ * @returns
7
+ */
8
+ export function classExtendsCoreExtension(Class) {
9
+ return Class.prototype instanceof CoreExtension;
10
+ }
11
+ export async function loadCoreExtension(coreExtensionModule, stage) {
12
+ let module;
13
+ try {
14
+ console.log('Loading core extension', coreExtensionModule);
15
+ module = (await import(coreExtensionModule /* @vite-ignore */));
16
+ }
17
+ catch (e) {
18
+ console.error(`The core extension module at '${coreExtensionModule}' could not be loaded.`);
19
+ console.error(e);
20
+ return;
21
+ }
22
+ if (!module.default) {
23
+ console.error(`The core extension module at '${coreExtensionModule}' does not have a default export.`);
24
+ return;
25
+ }
26
+ const ExtensionClass = module.default;
27
+ if (classExtendsCoreExtension(ExtensionClass)) {
28
+ const coreExtension = new ExtensionClass();
29
+ try {
30
+ await coreExtension.run(stage);
31
+ }
32
+ catch (e) {
33
+ console.error(`The core extension at '${coreExtensionModule}' threw an error.`);
34
+ console.error(e);
35
+ }
36
+ }
37
+ else {
38
+ console.error(`The core extension at '${coreExtensionModule}' does not extend CoreExtension.`);
39
+ }
40
+ }
41
+ export function santizeCustomDataMap(d) {
42
+ const validTypes = {
43
+ boolean: true,
44
+ string: true,
45
+ number: true,
46
+ undefined: true,
47
+ };
48
+ const keys = Object.keys(d);
49
+ for (let i = 0; i < keys.length; i++) {
50
+ const key = keys[i];
51
+ if (!key) {
52
+ continue;
53
+ }
54
+ const value = d[key];
55
+ const valueType = typeof value;
56
+ // Typescript doesn't understand the above const valueType ¯\_(ツ)_/¯
57
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
58
+ // @ts-ignore-next-line
59
+ if (valueType === 'string' && value.length > 2048) {
60
+ console.warn(`Custom Data value for ${key} is too long, it will be truncated to 2048 characters`);
61
+ // same here, see above comment, this can only be a string at this point
62
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
63
+ // @ts-ignore-next-line
64
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
65
+ d[key] = value.substring(0, 2048);
66
+ }
67
+ if (!validTypes[valueType]) {
68
+ console.warn(`Custom Data value for ${key} is not a boolean, string, or number, it will be ignored`);
69
+ delete d[key];
70
+ }
71
+ }
72
+ return d;
73
+ }
74
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/render-drivers/utils.ts"],"names":[],"mappings":"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"}
package/dist/src/utils.js CHANGED
@@ -65,7 +65,7 @@ export function createWebGLContext(canvas, forceWebGL2 = false, contextSpy) {
65
65
  * @returns
66
66
  */
67
67
  export function assertTruthy(condition, message) {
68
- if (isProductionEnvironment())
68
+ if (isProductionEnvironment() === true)
69
69
  return;
70
70
  if (!condition) {
71
71
  throw new Error(message || 'Assertion failed');
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}