@lightningjs/renderer 0.8.2 → 0.8.3

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 (66) hide show
  1. package/dist/src/core/CoreShaderManager.d.ts +2 -0
  2. package/dist/src/core/CoreShaderManager.js +8 -0
  3. package/dist/src/core/CoreShaderManager.js.map +1 -1
  4. package/dist/src/core/Stage.d.ts +3 -2
  5. package/dist/src/core/Stage.js +15 -5
  6. package/dist/src/core/Stage.js.map +1 -1
  7. package/dist/src/core/lib/ImageWorker.js +1 -1
  8. package/dist/src/core/renderers/CoreRenderer.d.ts +21 -3
  9. package/dist/src/core/renderers/CoreRenderer.js +13 -2
  10. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  11. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +16 -0
  12. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +155 -0
  13. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  14. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  15. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +122 -0
  16. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  17. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +5 -0
  18. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +32 -0
  19. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  20. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +15 -0
  21. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +45 -0
  22. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  23. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  24. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
  25. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  26. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +2 -20
  27. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +3 -15
  28. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  29. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +3 -1
  30. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  31. package/dist/src/core/textures/ImageTexture.js +3 -0
  32. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  33. package/dist/src/main-api/Inspector.js +7 -1
  34. package/dist/src/main-api/Inspector.js.map +1 -1
  35. package/dist/src/main-api/RendererMain.d.ts +4 -0
  36. package/dist/src/main-api/RendererMain.js +1 -0
  37. package/dist/src/main-api/RendererMain.js.map +1 -1
  38. package/dist/src/render-drivers/main/MainCoreDriver.js +1 -0
  39. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  40. package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
  41. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  42. package/dist/src/render-drivers/utils.js +1 -1
  43. package/dist/src/render-drivers/utils.js.map +1 -1
  44. package/dist/src/utils.d.ts +12 -6
  45. package/dist/src/utils.js +19 -9
  46. package/dist/src/utils.js.map +1 -1
  47. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/src/core/CoreShaderManager.ts +10 -0
  50. package/src/core/Stage.ts +18 -5
  51. package/src/core/lib/ImageWorker.ts +1 -1
  52. package/src/core/renderers/CoreRenderer.ts +32 -6
  53. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +178 -0
  54. package/src/core/renderers/canvas/CanvasCoreTexture.ts +138 -0
  55. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +34 -0
  56. package/src/core/renderers/canvas/internal/ColorUtils.ts +55 -0
  57. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +49 -0
  58. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +8 -38
  59. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +3 -1
  60. package/src/core/textures/ImageTexture.ts +3 -0
  61. package/src/main-api/Inspector.ts +6 -1
  62. package/src/main-api/RendererMain.ts +7 -0
  63. package/src/render-drivers/main/MainCoreDriver.ts +1 -0
  64. package/src/render-drivers/threadx/worker/renderer.ts +1 -0
  65. package/src/render-drivers/utils.ts +1 -1
  66. package/src/utils.ts +21 -9
@@ -19,6 +19,7 @@ import { FadeOutEffect, type FadeOutEffectProps } from './renderers/webgl/shader
19
19
  import { RadialGradientEffect, type RadialGradientEffectProps } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';
20
20
  import { RadialProgressEffect, type RadialProgressEffectProps } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';
21
21
  import { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';
22
+ import { UnsupportedShader } from './renderers/canvas/shaders/UnsupportedShader.js';
22
23
  export type { FadeOutEffectProps };
23
24
  export type { LinearGradientEffectProps };
24
25
  export type { RadialGradientEffectProps };
@@ -31,6 +32,7 @@ export interface ShaderMap {
31
32
  RoundedRectangle: typeof RoundedRectangle;
32
33
  DynamicShader: typeof DynamicShader;
33
34
  SdfShader: typeof SdfShader;
35
+ UnsupportedShader: typeof UnsupportedShader;
34
36
  }
35
37
  export type ShaderNode<Type extends keyof ShaderMap> = {
36
38
  shader: InstanceType<ShaderMap[Type]>;
@@ -16,6 +16,8 @@ import { FadeOutEffect, } from './renderers/webgl/shaders/effects/FadeOutEffect.
16
16
  import { RadialGradientEffect, } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';
17
17
  import { RadialProgressEffect, } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';
18
18
  import { HolePunchEffect } from './renderers/webgl/shaders/effects/HolePunchEffect.js';
19
+ import { WebGlCoreShader } from './renderers/webgl/WebGlCoreShader.js';
20
+ import { UnsupportedShader } from './renderers/canvas/shaders/UnsupportedShader.js';
19
21
  export class CoreShaderManager {
20
22
  shCache = new Map();
21
23
  shConstructors = {};
@@ -62,6 +64,12 @@ export class CoreShaderManager {
62
64
  if (!ShaderClass) {
63
65
  throw new Error(`Shader type "${shType}" is not registered`);
64
66
  }
67
+ if (this.renderer.mode === 'canvas' && ShaderClass.prototype instanceof WebGlCoreShader) {
68
+ return {
69
+ shader: new UnsupportedShader(shType),
70
+ props: props
71
+ };
72
+ }
65
73
  if (shType === 'DynamicShader') {
66
74
  return this.loadDynamicShader(props);
67
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoreShaderManager.js","sourceRoot":"","sources":["../../../src/core/CoreShaderManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreShaderManager.js","sourceRoot":"","sources":["../../../src/core/CoreShaderManager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';
2
1
  import { AnimationManager } from './animations/AnimationManager.js';
3
2
  import { CoreNode } from './CoreNode.js';
4
3
  import { CoreTextureManager } from './CoreTextureManager.js';
@@ -9,6 +8,7 @@ import { EventEmitter } from '../common/EventEmitter.js';
9
8
  import { ContextSpy } from './lib/ContextSpy.js';
10
9
  import type { FpsUpdatePayload, FrameTickPayload } from '../common/CommonTypes.js';
11
10
  import { TextureMemoryManager } from './TextureMemoryManager.js';
11
+ import type { CoreRenderer } from './renderers/CoreRenderer.js';
12
12
  export interface StageOptions {
13
13
  rootId: number;
14
14
  appWidth: number;
@@ -22,6 +22,7 @@ export interface StageOptions {
22
22
  fpsUpdateInterval: number;
23
23
  enableContextSpy: boolean;
24
24
  numImageWorkers: number;
25
+ renderMode: 'webgl' | 'canvas';
25
26
  debug?: {
26
27
  monitorTextureCache?: boolean;
27
28
  };
@@ -36,7 +37,7 @@ export declare class Stage extends EventEmitter {
36
37
  readonly fontManager: TrFontManager;
37
38
  readonly textRenderers: Partial<TextRendererMap>;
38
39
  readonly shManager: CoreShaderManager;
39
- readonly renderer: WebGlCoreRenderer;
40
+ readonly renderer: CoreRenderer;
40
41
  readonly root: CoreNode;
41
42
  readonly boundsMargin: [number, number, number, number];
42
43
  deltaTime: number;
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { startLoop, getTimeStamp } from './platform.js';
20
20
  import { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js';
21
- import { assertTruthy } from '../utils.js';
21
+ import { assertTruthy, setPremultiplyMode } from '../utils.js';
22
22
  import { AnimationManager } from './animations/AnimationManager.js';
23
23
  import { CoreNode } from './CoreNode.js';
24
24
  import { CoreTextureManager } from './CoreTextureManager.js';
@@ -29,6 +29,7 @@ import { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRendere
29
29
  import { EventEmitter } from '../common/EventEmitter.js';
30
30
  import { ContextSpy } from './lib/ContextSpy.js';
31
31
  import { TextureMemoryManager } from './TextureMemoryManager.js';
32
+ import { CanvasCoreRenderer } from './renderers/canvas/CanvasCoreRenderer.js';
32
33
  const bufferMemory = 2e6;
33
34
  const autoStart = true;
34
35
  export class Stage extends EventEmitter {
@@ -58,7 +59,7 @@ export class Stage extends EventEmitter {
58
59
  constructor(options) {
59
60
  super();
60
61
  this.options = options;
61
- const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;
62
+ const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, renderMode } = options;
62
63
  this.txManager = new CoreTextureManager(numImageWorkers);
63
64
  this.txMemManager = new TextureMemoryManager(txMemByteThreshold);
64
65
  this.shManager = new CoreShaderManager();
@@ -79,7 +80,7 @@ export class Stage extends EventEmitter {
79
80
  console.log('Texture Key Cache Size: ', debugInfo.keyCacheSize);
80
81
  }, 1000);
81
82
  }
82
- this.renderer = new WebGlCoreRenderer({
83
+ const rendererOptions = {
83
84
  stage: this,
84
85
  canvas,
85
86
  pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,
@@ -89,12 +90,21 @@ export class Stage extends EventEmitter {
89
90
  txMemManager: this.txMemManager,
90
91
  shManager: this.shManager,
91
92
  contextSpy: this.contextSpy,
92
- });
93
+ };
94
+ if (renderMode === 'canvas') {
95
+ this.renderer = new CanvasCoreRenderer(rendererOptions);
96
+ }
97
+ else {
98
+ this.renderer = new WebGlCoreRenderer(rendererOptions);
99
+ }
100
+ setPremultiplyMode(renderMode);
93
101
  // Must do this after renderer is created
94
102
  this.txManager.renderer = this.renderer;
95
- this.textRenderers = {
103
+ this.textRenderers = renderMode === 'webgl' ? {
96
104
  canvas: new CanvasTextRenderer(this),
97
105
  sdf: new SdfTextRenderer(this),
106
+ } : {
107
+ canvas: new CanvasTextRenderer(this),
98
108
  };
99
109
  this.fontManager = new TrFontManager(this.textRenderers);
100
110
  // create root node
@@ -1 +1 @@
1
- {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA+BjE,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,OAAO,KAAM,SAAQ,YAAY;IA0BhB;IAzBrB,oBAAoB;IACJ,gBAAgB,CAAmB;IACnC,SAAS,CAAqB;IAC9B,YAAY,CAAuB;IACnC,WAAW,CAAgB;IAC3B,aAAa,CAA2B;IACxC,SAAS,CAAoB;IAC7B,QAAQ,CAAoB;IAC5B,IAAI,CAAW;IACf,YAAY,CAAmC;IAE/D,SAAS;IACT,SAAS,GAAG,CAAC,CAAC;IACd,aAAa,GAAG,CAAC,CAAC;IAClB,gBAAgB,GAAG,CAAC,CAAC;IACb,YAAY,GAAG,CAAC,CAAC;IACjB,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,KAAK,CAAC;IAEhC,cAAc;IACd,UAAU,GAAsB,IAAI,CAAC;IAErC;;OAEG;IACH,YAAqB,OAAqB;QACxC,KAAK,EAAE,CAAC;QADW,YAAO,GAAP,OAAO,CAAc;QAExC,MAAM,EACJ,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqC,CAAC;QAC1D,IAAI,YAAY,EAAE;YAChB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC9B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,EAAE,mBAAmB,EAAE;YAC9B,WAAW,CAAC,GAAG,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;YAClE,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC;YACpC,KAAK,EAAE,IAAI;YACX,MAAM;YACN,UAAU,EACR,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,uBAAuB;YACpE,UAAU,EAAE,UAAU,IAAI,UAAU;YACpC,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;YACpC,GAAG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC;SAC/B,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAErB,8BAA8B;QAC9B,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;SACjB;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC;QAEvC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa;YAClC,CAAC,CAAC,GAAG,GAAG,CAAC;YACT,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,gBAAgB;YAC3B,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;QACH,iBAAiB;QACjB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAE3C,wBAAwB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1D;QAED,sCAAsC;QACtC,QAAQ,EAAE,KAAK,EAAE,CAAC;QAElB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,QAAQ,EAAE,MAAM,EAAE,CAAC;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2CAA2C;QAC3C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAED,YAAY;QACV,+DAA+D;QAC/D,2CAA2C;QAC3C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CACjD,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,GAAG;oBACH,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI;iBACxB,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS;aACV;YAED,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CACjB,OAAgB,EAChB,uBAAqD,IAAI;QAEzD,IAAI,UAAU,GAAG,oBAAoB,CAAC;QAEtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,sDAAsD;QACtD,IAAI,UAAU,EAAE;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,cAAc,CAAC,CAAC;gBAClE,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;iBAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBACnD,OAAO,CAAC,IAAI,CACV,sCAAsC,UAAU,YAAY,EAC5D,OAAO,CACR,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;SACF;QAED,IAAI,CAAC,UAAU,EAAE;YACf,qFAAqF;YACrF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACrB,8BAA8B;oBAC9B,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC7B,UAAU,GAAG,IAA6B,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,uDAAuD;gBACvD,UAAU,GAAG,QAAQ,CAAC;aACvB;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACrE;QAED,yEAAyE;QACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,YAAY,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;QAErE,kEAAkE;QAClE,wDAAwD;QACxD,OAAO,oBAA+C,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,7 @@ export class ImageWorkerManager {
81
81
  });
82
82
  }
83
83
 
84
- self.onmessage = async (event) => {
84
+ self.onmessage = (event) => {
85
85
  var src = event.data.src;
86
86
  var premultiplyAlpha = event.data.premultiplyAlpha;
87
87
 
@@ -1,6 +1,8 @@
1
1
  import type { CoreShaderManager } from '../CoreShaderManager.js';
2
- import type { TextureOptions } from '../CoreTextureManager.js';
2
+ import type { CoreTextureManager, TextureOptions } from '../CoreTextureManager.js';
3
3
  import type { Stage } from '../Stage.js';
4
+ import type { TextureMemoryManager } from '../TextureMemoryManager.js';
5
+ import type { ContextSpy } from '../lib/ContextSpy.js';
4
6
  import type { RectWithValid } from '../lib/utils.js';
5
7
  import type { Texture } from '../textures/Texture.js';
6
8
  import { CoreContextTexture } from './CoreContextTexture.js';
@@ -26,11 +28,27 @@ export interface QuadOptions {
26
28
  tc: number;
27
29
  td: number;
28
30
  }
31
+ export interface CoreRendererOptions {
32
+ stage: Stage;
33
+ canvas: HTMLCanvasElement | OffscreenCanvas;
34
+ pixelRatio: number;
35
+ txManager: CoreTextureManager;
36
+ txMemManager: TextureMemoryManager;
37
+ shManager: CoreShaderManager;
38
+ clearColor: number;
39
+ bufferMemory: number;
40
+ contextSpy: ContextSpy | null;
41
+ }
29
42
  export declare abstract class CoreRenderer {
43
+ options: CoreRendererOptions;
44
+ mode: 'webgl' | 'canvas' | undefined;
30
45
  protected stage: Stage;
31
- constructor(stage: Stage);
46
+ txManager: CoreTextureManager;
47
+ txMemManager: TextureMemoryManager;
48
+ shManager: CoreShaderManager;
49
+ constructor(options: CoreRendererOptions);
32
50
  abstract reset(): void;
33
- abstract render(surface: 'screen' | CoreContextTexture): void;
51
+ abstract render(surface?: 'screen' | CoreContextTexture): void;
34
52
  abstract addQuad(quad: QuadOptions): void;
35
53
  abstract createCtxTexture(textureSource: Texture): CoreContextTexture;
36
54
  abstract getShaderManager(): CoreShaderManager;
@@ -16,11 +16,22 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import { ColorTexture } from '../textures/ColorTexture.js';
19
20
  import { CoreContextTexture } from './CoreContextTexture.js';
20
21
  export class CoreRenderer {
22
+ options;
23
+ mode;
21
24
  stage;
22
- constructor(stage) {
23
- this.stage = stage;
25
+ //// Core Managers
26
+ txManager;
27
+ txMemManager;
28
+ shManager;
29
+ constructor(options) {
30
+ this.options = options;
31
+ this.stage = options.stage;
32
+ this.txManager = options.txManager;
33
+ this.txMemManager = options.txMemManager;
34
+ this.shManager = options.shManager;
24
35
  }
25
36
  }
26
37
  //# sourceMappingURL=CoreRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CoreRenderer.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA0B7D,MAAM,OAAgB,YAAY;IACtB,KAAK,CAAQ;IAEvB,YAAY,KAAY;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CAOF"}
1
+ {"version":3,"file":"CoreRenderer.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqC7D,MAAM,OAAgB,YAAY;IACzB,OAAO,CAAsB;IAC7B,IAAI,CAAiC;IAElC,KAAK,CAAQ;IAEvB,kBAAkB;IAClB,SAAS,CAAqB;IAC9B,YAAY,CAAuB;IACnC,SAAS,CAAoB;IAE7B,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;CAOF"}
@@ -0,0 +1,16 @@
1
+ import type { CoreShaderManager } from "../../CoreShaderManager.js";
2
+ import type { Texture } from "../../textures/Texture.js";
3
+ import type { CoreContextTexture } from "../CoreContextTexture.js";
4
+ import { CoreRenderer, type CoreRendererOptions, type QuadOptions } from "../CoreRenderer.js";
5
+ export declare class CanvasCoreRenderer extends CoreRenderer {
6
+ private context;
7
+ private canvas;
8
+ private pixelRatio;
9
+ private clearColor;
10
+ constructor(options: CoreRendererOptions);
11
+ reset(): void;
12
+ render(): void;
13
+ addQuad(quad: QuadOptions): void;
14
+ createCtxTexture(textureSource: Texture): CoreContextTexture;
15
+ getShaderManager(): CoreShaderManager;
16
+ }
@@ -0,0 +1,155 @@
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 { getRgbaComponents } from "../../lib/utils.js";
20
+ import { SubTexture } from "../../textures/SubTexture.js";
21
+ import { CoreRenderer } from "../CoreRenderer.js";
22
+ import { CanvasCoreTexture } from "./CanvasCoreTexture.js";
23
+ import { getRadius } from "./internal/C2DShaderUtils.js";
24
+ import { formatRgba, parseColor } from "./internal/ColorUtils.js";
25
+ export class CanvasCoreRenderer extends CoreRenderer {
26
+ context;
27
+ canvas;
28
+ pixelRatio;
29
+ clearColor;
30
+ constructor(options) {
31
+ super(options);
32
+ this.mode = 'canvas';
33
+ this.shManager.renderer = this;
34
+ const { canvas, pixelRatio, clearColor } = options;
35
+ this.canvas = canvas;
36
+ this.context = canvas.getContext('2d');
37
+ this.pixelRatio = pixelRatio;
38
+ this.clearColor = clearColor ? getRgbaComponents(clearColor) : undefined;
39
+ }
40
+ reset() {
41
+ // eslint-disable-next-line no-self-assign
42
+ this.canvas.width = this.canvas.width; // quick reset canvas
43
+ const ctx = this.context;
44
+ if (this.clearColor) {
45
+ const [r, g, b, a] = this.clearColor;
46
+ ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a / 255})`;
47
+ ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
48
+ }
49
+ ctx.scale(this.pixelRatio, this.pixelRatio);
50
+ }
51
+ render() {
52
+ // noop
53
+ }
54
+ addQuad(quad) {
55
+ const ctx = this.context;
56
+ const { tx, ty, width, height, alpha, colorTl, colorTr, colorBr, ta, tb, tc, td, clippingRect } = quad;
57
+ let texture = quad.texture;
58
+ let ctxTexture = undefined;
59
+ let frame;
60
+ if (texture) {
61
+ if (texture instanceof SubTexture) {
62
+ frame = texture.props;
63
+ texture = texture.parentTexture;
64
+ }
65
+ ctxTexture = this.txManager.getCtxTexture(texture);
66
+ if (texture.state === 'freed') {
67
+ ctxTexture.load();
68
+ return;
69
+ }
70
+ if (texture.state !== 'loaded' || !ctxTexture.hasImage()) {
71
+ return;
72
+ }
73
+ }
74
+ const color = parseColor(colorTl);
75
+ const hasTransform = ta !== 1;
76
+ const hasClipping = clippingRect.width !== 0 && clippingRect.height !== 0;
77
+ const hasGradient = colorTl !== colorTr || colorTl !== colorBr;
78
+ const radius = quad.shader ? getRadius(quad) : 0;
79
+ if (hasTransform || hasClipping || radius) {
80
+ ctx.save();
81
+ }
82
+ if (hasClipping) {
83
+ const path = new Path2D();
84
+ const { x, y, width, height } = clippingRect;
85
+ path.rect(x, y, width, height);
86
+ ctx.clip(path);
87
+ }
88
+ if (hasTransform) {
89
+ // Quad transform:
90
+ // | ta tb tx |
91
+ // | tc td ty |
92
+ // | 0 0 1 |
93
+ // C2D transform:
94
+ // | a c e |
95
+ // | b d f |
96
+ // | 0 0 1 |
97
+ const scale = this.pixelRatio;
98
+ ctx.setTransform(ta, tc, tb, td, tx * scale, ty * scale);
99
+ ctx.scale(scale, scale);
100
+ ctx.translate(-tx, -ty);
101
+ }
102
+ if (radius) {
103
+ const path = new Path2D();
104
+ path.roundRect(tx, ty, width, height, radius);
105
+ ctx.clip(path);
106
+ }
107
+ if (ctxTexture) {
108
+ const image = ctxTexture.getImage(color);
109
+ ctx.globalAlpha = alpha;
110
+ if (frame) {
111
+ ctx.drawImage(image, frame.x, frame.y, frame.width, frame.height, tx, ty, width, height);
112
+ }
113
+ else {
114
+ ctx.drawImage(image, tx, ty, width, height);
115
+ }
116
+ ctx.globalAlpha = 1;
117
+ }
118
+ else if (hasGradient) {
119
+ let endX = tx;
120
+ let endY = ty;
121
+ let endColor;
122
+ if (colorTl === colorTr) {
123
+ // vertical
124
+ endX = tx;
125
+ endY = ty + height;
126
+ endColor = parseColor(colorBr);
127
+ }
128
+ else {
129
+ // horizontal
130
+ endX = tx + width;
131
+ endY = ty;
132
+ endColor = parseColor(colorTr);
133
+ }
134
+ const gradient = ctx.createLinearGradient(tx, ty, endX, endY);
135
+ gradient.addColorStop(0, formatRgba(color));
136
+ gradient.addColorStop(1, formatRgba(endColor));
137
+ ctx.fillStyle = gradient;
138
+ ctx.fillRect(tx, ty, width, height);
139
+ }
140
+ else {
141
+ ctx.fillStyle = formatRgba(color);
142
+ ctx.fillRect(tx, ty, width, height);
143
+ }
144
+ if (hasTransform || hasClipping || radius) {
145
+ ctx.restore();
146
+ }
147
+ }
148
+ createCtxTexture(textureSource) {
149
+ return new CanvasCoreTexture(this.txMemManager, textureSource);
150
+ }
151
+ getShaderManager() {
152
+ return this.shManager;
153
+ }
154
+ }
155
+ //# sourceMappingURL=CanvasCoreRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasCoreRenderer.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { CoreContextTexture } from "../CoreContextTexture.js";
2
+ import { type IParsedColor } from "./internal/ColorUtils.js";
3
+ export declare class CanvasCoreTexture extends CoreContextTexture {
4
+ protected image: ImageBitmap | HTMLCanvasElement | undefined;
5
+ protected tintCache: {
6
+ key: string;
7
+ image: HTMLCanvasElement;
8
+ } | undefined;
9
+ load(): void;
10
+ free(): void;
11
+ updateMemSize(): void;
12
+ hasImage(): boolean;
13
+ getImage(color: IParsedColor): ImageBitmap | HTMLCanvasElement;
14
+ protected tintTexture(source: ImageBitmap | HTMLCanvasElement, color: string): HTMLCanvasElement;
15
+ get renderable(): boolean;
16
+ private onLoadRequest;
17
+ }
@@ -0,0 +1,122 @@
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 { assertTruthy } from "../../../utils.js";
20
+ import { CoreContextTexture } from "../CoreContextTexture.js";
21
+ import { formatRgba } from "./internal/ColorUtils.js";
22
+ export class CanvasCoreTexture extends CoreContextTexture {
23
+ image;
24
+ tintCache;
25
+ load() {
26
+ if (this.textureSource.state !== 'freed') {
27
+ return;
28
+ }
29
+ this.textureSource.setState('loading');
30
+ this.onLoadRequest().then((size) => {
31
+ this.textureSource.setState('loaded', size);
32
+ this.updateMemSize();
33
+ }).catch((err) => {
34
+ this.textureSource.setState('failed', err);
35
+ });
36
+ }
37
+ free() {
38
+ this.image = undefined;
39
+ this.tintCache = undefined;
40
+ this.textureSource.setState('freed');
41
+ this.memManager.setTextureMemUse(this, 0);
42
+ }
43
+ updateMemSize() {
44
+ // Counting memory usage for:
45
+ // - main image
46
+ // - tinted image
47
+ const mult = this.tintCache ? 8 : 4;
48
+ if (this.textureSource.dimensions) {
49
+ const { width, height } = this.textureSource.dimensions;
50
+ this.memManager.setTextureMemUse(this, width * height * mult);
51
+ }
52
+ }
53
+ hasImage() {
54
+ return this.image !== undefined;
55
+ }
56
+ getImage(color) {
57
+ const image = this.image;
58
+ assertTruthy(image, 'Attempt to get unloaded image texture');
59
+ if (color.isWhite) {
60
+ if (this.tintCache) {
61
+ this.tintCache = undefined;
62
+ this.updateMemSize();
63
+ }
64
+ return image;
65
+ }
66
+ const key = formatRgba(color);
67
+ if (this.tintCache?.key === key) {
68
+ return this.tintCache.image;
69
+ }
70
+ const tintedImage = this.tintTexture(image, key);
71
+ this.tintCache = {
72
+ key,
73
+ image: tintedImage
74
+ };
75
+ this.updateMemSize();
76
+ return tintedImage;
77
+ }
78
+ tintTexture(source, color) {
79
+ const { width, height } = source;
80
+ const canvas = document.createElement('canvas');
81
+ canvas.width = width;
82
+ canvas.height = height;
83
+ const ctx = canvas.getContext('2d');
84
+ if (ctx) {
85
+ // fill with target color
86
+ ctx.fillStyle = color;
87
+ ctx.globalCompositeOperation = 'copy';
88
+ ctx.fillRect(0, 0, width, height);
89
+ // multiply with image, resulting in non-transparent tinted image
90
+ ctx.globalCompositeOperation = 'multiply';
91
+ ctx.drawImage(source, 0, 0, width, height, 0, 0, width, height);
92
+ // apply original image alpha
93
+ ctx.globalCompositeOperation = 'destination-in';
94
+ ctx.drawImage(source, 0, 0, width, height, 0, 0, width, height);
95
+ }
96
+ return canvas;
97
+ }
98
+ get renderable() {
99
+ return this.textureSource.renderable;
100
+ }
101
+ async onLoadRequest() {
102
+ const { data } = await this.textureSource.getTextureData();
103
+ // TODO: canvas from text renderer should be able to provide the canvas directly
104
+ // instead of having to re-draw it into a new canvas...
105
+ if (data instanceof ImageData) {
106
+ const canvas = document.createElement('canvas');
107
+ canvas.width = data.width;
108
+ canvas.height = data.height;
109
+ const ctx = canvas.getContext('2d');
110
+ if (ctx)
111
+ ctx.putImageData(data, 0, 0);
112
+ this.image = canvas;
113
+ return { width: data.width, height: data.height };
114
+ }
115
+ else if (data instanceof ImageBitmap) {
116
+ this.image = data;
117
+ return { width: data.width, height: data.height };
118
+ }
119
+ return { width: 0, height: 0 };
120
+ }
121
+ }
122
+ //# sourceMappingURL=CanvasCoreTexture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasCoreTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreTexture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { QuadOptions } from "../../CoreRenderer.js";
2
+ /**
3
+ * Extract `RoundedRectangle` shader radius to apply as a clipping
4
+ */
5
+ export declare function getRadius(quad: QuadOptions): number;
@@ -0,0 +1,32 @@
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 { ROUNDED_RECTANGLE_SHADER_TYPE, UnsupportedShader } from "../shaders/UnsupportedShader.js";
20
+ /**
21
+ * Extract `RoundedRectangle` shader radius to apply as a clipping
22
+ */
23
+ export function getRadius(quad) {
24
+ if (quad.shader instanceof UnsupportedShader) {
25
+ const shType = quad.shader.shType;
26
+ if (shType === ROUNDED_RECTANGLE_SHADER_TYPE) {
27
+ return quad.shaderProps?.radius ?? 0;
28
+ }
29
+ }
30
+ return 0;
31
+ }
32
+ //# sourceMappingURL=C2DShaderUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C2DShaderUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/internal/C2DShaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEnG;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAiB;IACzC,IAAI,IAAI,CAAC,MAAM,YAAY,iBAAiB,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,MAAM,KAAK,6BAA6B,EAAE;YAC5C,OAAO,IAAI,CAAC,WAAW,EAAE,MAAgB,IAAI,CAAC,CAAC;SAChD;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}