@flighthq/effects-canvas 0.2.0 → 0.2.1-next.410.a23f189

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.
@@ -1,4 +1,5 @@
1
- import type { CanvasRenderEffectRunner, CanvasRenderTarget, DropShadowEffect } from '@flighthq/types';
1
+ import type { CanvasRenderEffectRunner, CanvasRenderTarget, CanvasRenderTargetPool, DropShadowEffect } from '@flighthq/types';
2
2
  export declare function applyDropShadowEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, effect: Readonly<DropShadowEffect>): void;
3
+ export declare function applyDropShadowEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, pool: CanvasRenderTargetPool, effect: Readonly<DropShadowEffect>): void;
3
4
  export declare const defaultCanvasDropShadowEffectRunner: CanvasRenderEffectRunner;
4
5
  //# sourceMappingURL=canvasDropShadowEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasDropShadowEffect.d.ts","sourceRoot":"","sources":["../src/canvasDropShadowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAStG,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAGN;AAED,eAAO,MAAM,mCAAmC,EAAE,wBAEjD,CAAC"}
1
+ {"version":3,"file":"canvasDropShadowEffect.d.ts","sourceRoot":"","sources":["../src/canvasDropShadowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAmBzB,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAAC;AACR,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAAC;AAkBR,eAAO,MAAM,mCAAmC,EAAE,wBAEjD,CAAC"}
@@ -1,14 +1,40 @@
1
1
  import { drawCanvasEffectPass } from './canvasEffectCompositing';
2
2
  import { computeDropShadowEffectCss } from './canvasEffectDropShadowCss';
3
- // Drop-shadow composite effect: tint the scene silhouette, blur it, offset it by angle/distance, then composite the source over the shadow.
4
- // Canvas 2D realizes the shadow/glow as a CSS `drop-shadow()` filter chain (the same string the DOM
5
- // backend emits). Knockout and anisotropic-blur variants have no CSS equivalent; those pass the scene
6
- // through unchanged rather than faking an approximation.
7
- export function applyDropShadowEffectToCanvas(source, dest, effect) {
3
+ import { acquireCanvasRenderTarget, createCanvasRenderTargetPool, releaseCanvasRenderTarget, } from './canvasRenderEffectPipeline';
4
+ import { clearCanvasTarget, compositeCanvasImage, compositeCanvasSourceMode, drawCanvasTintedAlphaMask, } from './canvasSourceModeCompositing';
5
+ export function applyDropShadowEffectToCanvas(source, dest, poolOrEffect, maybeEffect) {
6
+ const effect = maybeEffect ?? poolOrEffect;
8
7
  const css = computeDropShadowEffectCss(effect);
9
- drawCanvasEffectPass(dest, source, css ?? 'none');
8
+ if (css !== null) {
9
+ drawCanvasEffectPass(dest, source, css);
10
+ return;
11
+ }
12
+ const pool = maybeEffect === undefined ? createCanvasRenderTargetPool() : poolOrEffect;
13
+ applyDropShadowEffectToCanvasWithPool(source, dest, pool, effect);
10
14
  }
11
15
  export const defaultCanvasDropShadowEffectRunner = (ctx, effect) => {
12
- applyDropShadowEffectToCanvas(ctx.source, ctx.dest, effect);
16
+ applyDropShadowEffectToCanvas(ctx.source, ctx.dest, ctx.pool, effect);
13
17
  };
18
+ function applyDropShadowEffectToCanvasWithPool(source, dest, pool, effect) {
19
+ const mask = acquireCanvasRenderTarget(pool, source.width, source.height);
20
+ const blurred = acquireCanvasRenderTarget(pool, source.width, source.height);
21
+ const angle = ((effect.angle ?? 45) * Math.PI) / 180;
22
+ const distance = effect.distance ?? 4;
23
+ const dx = Math.cos(angle) * distance;
24
+ const dy = Math.sin(angle) * distance;
25
+ const strength = effect.strength ?? 1;
26
+ const tintStrength = Math.min(1, strength);
27
+ const shadowPasses = Math.max(1, Math.floor(strength));
28
+ const blur = Math.max(0, ((effect.blurX ?? 4) + (effect.blurY ?? 4)) / 2);
29
+ const sourceMode = effect.sourceMode ?? 'draw';
30
+ drawCanvasTintedAlphaMask(mask, source, effect.color ?? 0, effect.alpha ?? 1, tintStrength);
31
+ drawCanvasEffectPass(blurred, mask, blur > 0 ? `blur(${blur}px)` : 'none');
32
+ clearCanvasTarget(dest);
33
+ for (let i = 0; i < shadowPasses; i++) {
34
+ compositeCanvasImage(dest, blurred, dx, dy);
35
+ }
36
+ compositeCanvasSourceMode(dest, source, sourceMode);
37
+ releaseCanvasRenderTarget(pool, mask);
38
+ releaseCanvasRenderTarget(pool, blurred);
39
+ }
14
40
  //# sourceMappingURL=canvasDropShadowEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasDropShadowEffect.js","sourceRoot":"","sources":["../src/canvasDropShadowEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,4IAA4I;AAC5I,oGAAoG;AACpG,sGAAsG;AACtG,yDAAyD;AACzD,MAAM,UAAU,6BAA6B,CAC3C,MAAoC,EACpC,IAAkC,EAClC,MAAkC;IAElC,MAAM,GAAG,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC/C,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC3F,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA0B,CAAC,CAAC;AAClF,CAAC,CAAC"}
1
+ {"version":3,"file":"canvasDropShadowEffect.js","sourceRoot":"","sources":["../src/canvasDropShadowEffect.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  // Drop-shadow composite effect as a CSS `drop-shadow()` string (the same string the DOM backend emits).
2
- // Knockout and anisotropic-blur (blurX !== blurY) variants have no CSS equivalent and return null.
2
+ // Only sourceMode 'draw' and isotropic blur can be represented by CSS-only drop-shadow().
3
3
  // Offset is derived from angle (degrees, default 45) and distance (default 4), rounded to whole pixels.
4
4
  export function computeDropShadowEffectCss(effect) {
5
- if (effect.knockout)
5
+ if ((effect.sourceMode ?? 'draw') !== 'draw')
6
6
  return null;
7
7
  const blurX = effect.blurX ?? 4;
8
8
  const blurY = effect.blurY ?? 4;
@@ -16,9 +16,9 @@ export function computeDropShadowEffectCss(effect) {
16
16
  return `drop-shadow(${dx}px ${dy}px ${blurX}px ${cssRgbaFromColor(effect.color ?? 0, effect.alpha ?? 1)})`;
17
17
  }
18
18
  // Outer-glow composite effect as a centered (no offset) CSS `drop-shadow()` string.
19
- // Knockout and anisotropic-blur (blurX !== blurY) variants have no CSS equivalent and return null.
19
+ // Only sourceMode 'draw' and isotropic blur can be represented by CSS-only drop-shadow().
20
20
  export function computeOuterGlowEffectCss(effect) {
21
- if (effect.knockout)
21
+ if ((effect.sourceMode ?? 'draw') !== 'draw')
22
22
  return null;
23
23
  const blurX = effect.blurX ?? 6;
24
24
  const blurY = effect.blurY ?? 6;
@@ -1 +1 @@
1
- {"version":3,"file":"canvasEffectDropShadowCss.js","sourceRoot":"","sources":["../src/canvasEffectDropShadowCss.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,mGAAmG;AACnG,wGAAwG;AACxG,MAAM,UAAU,0BAA0B,CAAC,MAAkC;IAC3E,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpD,OAAO,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;AAC7G,CAAC;AAED,oFAAoF;AACpF,mGAAmG;AACnG,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,uBAAuB,KAAK,MAAM,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5G,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IACvB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"canvasEffectDropShadowCss.js","sourceRoot":"","sources":["../src/canvasEffectDropShadowCss.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,0FAA0F;AAC1F,wGAAwG;AACxG,MAAM,UAAU,0BAA0B,CAAC,MAAkC;IAC3E,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpD,OAAO,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;AAC7G,CAAC;AAED,oFAAoF;AACpF,0FAA0F;AAC1F,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,uBAAuB,KAAK,MAAM,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5G,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IACvB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { CanvasRenderEffectRunner, CanvasRenderTarget, OuterGlowEffect } from '@flighthq/types';
1
+ import type { CanvasRenderEffectRunner, CanvasRenderTarget, CanvasRenderTargetPool, OuterGlowEffect } from '@flighthq/types';
2
2
  export declare function applyOuterGlowEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, effect: Readonly<OuterGlowEffect>): void;
3
+ export declare function applyOuterGlowEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, pool: CanvasRenderTargetPool, effect: Readonly<OuterGlowEffect>): void;
3
4
  export declare const defaultCanvasOuterGlowEffectRunner: CanvasRenderEffectRunner;
4
5
  //# sourceMappingURL=canvasOuterGlowEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasOuterGlowEffect.d.ts","sourceRoot":"","sources":["../src/canvasOuterGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASrG,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAGN;AAED,eAAO,MAAM,kCAAkC,EAAE,wBAEhD,CAAC"}
1
+ {"version":3,"file":"canvasOuterGlowEffect.d.ts","sourceRoot":"","sources":["../src/canvasOuterGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAmBzB,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAAC;AACR,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAAC;AAkBR,eAAO,MAAM,kCAAkC,EAAE,wBAEhD,CAAC"}
@@ -1,14 +1,36 @@
1
1
  import { drawCanvasEffectPass } from './canvasEffectCompositing';
2
2
  import { computeOuterGlowEffectCss } from './canvasEffectDropShadowCss';
3
- // Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then composite the source over the glow.
4
- // Canvas 2D realizes the shadow/glow as a CSS `drop-shadow()` filter chain (the same string the DOM
5
- // backend emits). Knockout and anisotropic-blur variants have no CSS equivalent; those pass the scene
6
- // through unchanged rather than faking an approximation.
7
- export function applyOuterGlowEffectToCanvas(source, dest, effect) {
3
+ import { acquireCanvasRenderTarget, createCanvasRenderTargetPool, releaseCanvasRenderTarget, } from './canvasRenderEffectPipeline';
4
+ import { clearCanvasTarget, compositeCanvasImage, compositeCanvasSourceMode, drawCanvasTintedAlphaMask, } from './canvasSourceModeCompositing';
5
+ export function applyOuterGlowEffectToCanvas(source, dest, poolOrEffect, maybeEffect) {
6
+ const effect = maybeEffect ?? poolOrEffect;
8
7
  const css = computeOuterGlowEffectCss(effect);
9
- drawCanvasEffectPass(dest, source, css ?? 'none');
8
+ if (css !== null) {
9
+ drawCanvasEffectPass(dest, source, css);
10
+ return;
11
+ }
12
+ const pool = maybeEffect === undefined ? createCanvasRenderTargetPool() : poolOrEffect;
13
+ applyOuterGlowEffectToCanvasWithPool(source, dest, pool, effect);
10
14
  }
11
15
  export const defaultCanvasOuterGlowEffectRunner = (ctx, effect) => {
12
- applyOuterGlowEffectToCanvas(ctx.source, ctx.dest, effect);
16
+ applyOuterGlowEffectToCanvas(ctx.source, ctx.dest, ctx.pool, effect);
13
17
  };
18
+ function applyOuterGlowEffectToCanvasWithPool(source, dest, pool, effect) {
19
+ const mask = acquireCanvasRenderTarget(pool, source.width, source.height);
20
+ const blurred = acquireCanvasRenderTarget(pool, source.width, source.height);
21
+ const strength = effect.strength ?? 1;
22
+ const tintStrength = Math.min(1, strength);
23
+ const glowPasses = Math.max(1, Math.floor(strength));
24
+ const blur = Math.max(0, ((effect.blurX ?? 6) + (effect.blurY ?? 6)) / 2);
25
+ const sourceMode = effect.sourceMode ?? 'draw';
26
+ drawCanvasTintedAlphaMask(mask, source, effect.color ?? 0xff0000, effect.alpha ?? 1, tintStrength);
27
+ drawCanvasEffectPass(blurred, mask, blur > 0 ? `blur(${blur}px)` : 'none');
28
+ clearCanvasTarget(dest);
29
+ for (let i = 0; i < glowPasses; i++) {
30
+ compositeCanvasImage(dest, blurred);
31
+ }
32
+ compositeCanvasSourceMode(dest, source, sourceMode);
33
+ releaseCanvasRenderTarget(pool, mask);
34
+ releaseCanvasRenderTarget(pool, blurred);
35
+ }
14
36
  //# sourceMappingURL=canvasOuterGlowEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasOuterGlowEffect.js","sourceRoot":"","sources":["../src/canvasOuterGlowEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,iIAAiI;AACjI,oGAAoG;AACpG,sGAAsG;AACtG,yDAAyD;AACzD,MAAM,UAAU,4BAA4B,CAC1C,MAAoC,EACpC,IAAkC,EAClC,MAAiC;IAEjC,MAAM,GAAG,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC9C,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC1F,4BAA4B,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AAChF,CAAC,CAAC"}
1
+ {"version":3,"file":"canvasOuterGlowEffect.js","sourceRoot":"","sources":["../src/canvasOuterGlowEffect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/canvasRenderEffectPipeline.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAgBzB,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,kBAAkB,CAOpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAapH;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,0BAA0B,CAO5B;AAED,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,0BAA0B,GACnC,IAAI,CAQN;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,GACnD,IAAI,CAyDN;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAIxG"}
1
+ {"version":3,"file":"canvasRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/canvasRenderEffectPipeline.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAgBzB,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,kBAAkB,CAOpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAYpH;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,0BAA0B,CAO5B;AAED,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,0BAA0B,GACnC,IAAI,CAQN;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,GACnD,IAAI,CAyDN;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAIxG"}
@@ -1,6 +1,5 @@
1
1
  import { bakeColorLutForRun, createColorLutCache, fuseColorMatrices, getAdjustmentColorMatrix, isColorLutAdjustment, } from '@flighthq/adjustments';
2
- import { beginCanvasRenderTarget, createCanvasRenderTarget, endCanvasRenderTarget, resizeCanvasRenderTarget, } from '@flighthq/displayobject-canvas';
3
- import { createMatrix } from '@flighthq/geometry';
2
+ import { beginCanvasRenderPass, createCanvasRenderTarget, endCanvasRenderPass, resizeCanvasRenderTarget, } from '@flighthq/displayobject-canvas';
4
3
  import { applyColorLutPassToCanvas } from './canvasColorLutPass';
5
4
  import { applyColorMatrixPassToCanvas } from './canvasColorMatrixPass';
6
5
  import { getCanvasRenderEffectRunner } from './canvasRenderEffectRegistry';
@@ -31,10 +30,9 @@ export function beginCanvasRenderEffectPipeline(state, pipeline) {
31
30
  else {
32
31
  resizeCanvasRenderTarget(pipeline.sceneTarget, w, h);
33
32
  }
34
- // Clear the offscreen scene canvas before redirecting render into it; resize already clears on the
35
- // grow path, but an unchanged size keeps last frame's pixels otherwise.
36
- pipeline.sceneTarget.context.clearRect(0, 0, pipeline.sceneTarget.width, pipeline.sceneTarget.height);
37
- beginCanvasRenderTarget(state, pipeline.sceneTarget, state.renderTransform2D ?? createMatrix());
33
+ // beginCanvasRenderPass clears the offscreen scene canvas by default (an unchanged size would keep last
34
+ // frame's pixels otherwise); the current 2D transform is inherited rather than passed.
35
+ beginCanvasRenderPass(state, pipeline.sceneTarget);
38
36
  }
39
37
  export function createCanvasRenderEffectPipeline(_state, options = {}) {
40
38
  return {
@@ -60,7 +58,7 @@ export function endCanvasRenderEffectPipeline(state, pipeline, operations) {
60
58
  const scene = pipeline.sceneTarget;
61
59
  if (scene === null)
62
60
  return;
63
- endCanvasRenderTarget(state);
61
+ endCanvasRenderPass(state);
64
62
  const pool = pipeline.pool;
65
63
  let source = scene;
66
64
  let scratchA = null;
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderEffectPipeline.js","sourceRoot":"","sources":["../src/canvasRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasRenderEffectPipeline.js","sourceRoot":"","sources":["../src/canvasRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderEffectRegistration.d.ts","sourceRoot":"","sources":["../src/canvasRenderEffectRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA4CnF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAM7E;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI9E;AASD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIpF;AAOD,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAInF;AAOD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIrF;AAOD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIjF"}
1
+ {"version":3,"file":"canvasRenderEffectRegistration.d.ts","sourceRoot":"","sources":["../src/canvasRenderEffectRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA4CnF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAM7E;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI9E;AASD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIpF;AAQD,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAInF;AAOD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIrF;AAOD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIjF"}
@@ -69,8 +69,9 @@ export function registerColorGradeCanvasRenderEffects(state) {
69
69
  }
70
70
  }
71
71
  // Registers the composite-family default runners realizable on Canvas 2D: DropShadowEffect and
72
- // OuterGlowEffect, both drawn via a CSS `drop-shadow()` filter chain. The other former-filter
73
- // composites (bevel, inner glow/shadow, gradient glow/bevel) have no Canvas 2D realization — they
72
+ // OuterGlowEffect. Their simple draw mode uses CSS `drop-shadow()`, while hide/knockout use explicit
73
+ // Canvas compositing. The other former-filter composites (bevel, inner glow/shadow, gradient glow/bevel)
74
+ // have no Canvas 2D realization — they
74
75
  // require the multi-target tint/blur/offset GPU recipe — so they are intentionally omitted here (the
75
76
  // pipeline skips unregistered kinds). Symmetric with registerCompositeGlRenderEffects.
76
77
  export function registerCompositeCanvasRenderEffects(state) {
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderEffectRegistration.js","sourceRoot":"","sources":["../src/canvasRenderEffectRegistration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,4CAA4C,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AAEnF,qGAAqG;AACrG,uGAAuG;AACvG,qGAAqG;AACrG,oGAAoG;AACpG,iGAAiG;AACjG,yFAAyF;AACzF,EAAE;AACF,gGAAgG;AAChG,iGAAiG;AACjG,oCAAoC;AACpC,MAAM,UAAU,8BAA8B,CAAC,KAAwB;IACrE,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,qCAAqC,CAAC,KAAK,CAAC,CAAC;IAC7C,oCAAoC,CAAC,KAAK,CAAC,CAAC;IAC5C,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAC9C,kCAAkC,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,+FAA+F;AAC/F,oFAAoF;AACpF,yFAAyF;AACzF,mFAAmF;AACnF,iEAAiE;AACjE,MAAM,UAAU,+BAA+B,CAAC,KAAwB;IACtE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACtD,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,yGAAyG;AACzG,mGAAmG;AACnG,yGAAyG;AACzG,sEAAsE;AACtE,yEAAyE;AACzE,iEAAiE;AACjE,MAAM,UAAU,qCAAqC,CAAC,KAAwB;IAC5E,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,+BAA+B,EAAE,CAAC;QAC7D,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,8FAA8F;AAC9F,kGAAkG;AAClG,qGAAqG;AACrG,uFAAuF;AACvF,MAAM,UAAU,oCAAoC,CAAC,KAAwB;IAC3E,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,6BAA6B,EAAE,CAAC;QAC3D,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,gGAAgG;AAChG,8FAA8F;AAC9F,8FAA8F;AAC9F,iGAAiG;AACjG,MAAM,UAAU,sCAAsC,CAAC,KAAwB;IAC7E,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,+BAA+B,EAAE,CAAC;QAC7D,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,mGAAmG;AACnG,6FAA6F;AAC7F,yEAAyE;AACzE,iEAAiE;AACjE,MAAM,UAAU,kCAAkC,CAAC,KAAwB;IACzE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,2BAA2B,EAAE,CAAC;QACzD,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,wEAAwE;AAExE,kGAAkG;AAClG,uFAAuF;AACvF,MAAM,6BAA6B,GAA+D;IAChG,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;IACzD,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;CACxD,CAAC;AAEF,+EAA+E;AAC/E,kGAAkG;AAClG,6FAA6F;AAC7F,MAAM,wBAAwB,GAA+D;IAC3F,CAAC,aAAa,EAAE,8BAA8B,CAAC;IAC/C,CAAC,YAAY,EAAE,6BAA6B,CAAC;IAC7C,CAAC,uBAAuB,EAAE,wCAAwC,CAAC;IACnE,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;IACzD,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;CACxD,CAAC;AAEF,8FAA8F;AAC9F,wGAAwG;AACxG,8EAA8E;AAC9E,MAAM,+BAA+B,GAA+D;IAClG,CAAC,cAAc,EAAE,+BAA+B,CAAC;IACjD,CAAC,eAAe,EAAE,gCAAgC,CAAC;IACnD,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;CAC9D,CAAC;AAEF,0FAA0F;AAC1F,6FAA6F;AAC7F,2FAA2F;AAC3F,0FAA0F;AAC1F,wBAAwB;AACxB,MAAM,+BAA+B,GAA+D,EAAE,CAAC;AAEvG,mFAAmF;AACnF,MAAM,2BAA2B,GAA+D;IAC9F,CAAC,2BAA2B,EAAE,4CAA4C,CAAC;IAC3E,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;IAC3D,CAAC,WAAW,EAAE,4BAA4B,CAAC;IAC3C,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;IAC7D,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACvD,CAAC,cAAc,EAAE,+BAA+B,CAAC;IACjD,CAAC,eAAe,EAAE,gCAAgC,CAAC;IACnD,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;IACrD,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;IACrD,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;IACrD,CAAC,sBAAsB,EAAE,uCAAuC,CAAC;IACjE,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACvD,CAAC,cAAc,EAAE,+BAA+B,CAAC;IACjD,CAAC,eAAe,EAAE,gCAAgC,CAAC;IACnD,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;IACrD,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACvD,CAAC,sBAAsB,EAAE,uCAAuC,CAAC;IACjE,CAAC,eAAe,EAAE,gCAAgC,CAAC;IACnD,CAAC,cAAc,EAAE,+BAA+B,CAAC;IACjD,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;CACtD,CAAC"}
1
+ {"version":3,"file":"canvasRenderEffectRegistration.js","sourceRoot":"","sources":["../src/canvasRenderEffectRegistration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CanvasRenderTarget } from '@flighthq/types';
2
+ export type CanvasEffectSourceMode = 'draw' | 'hide' | 'knockout';
3
+ export declare function clearCanvasTarget(dest: Readonly<CanvasRenderTarget>): void;
4
+ export declare function compositeCanvasImage(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, dx?: number, dy?: number, compositeOperation?: GlobalCompositeOperation): void;
5
+ export declare function compositeCanvasSourceMode(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, sourceMode: CanvasEffectSourceMode): void;
6
+ export declare function drawCanvasTintedAlphaMask(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, color: number, alpha: number, strength: number): void;
7
+ //# sourceMappingURL=canvasSourceModeCompositing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasSourceModeCompositing.d.ts","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAS1E;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,EAAE,SAAI,EACN,EAAE,SAAI,EACN,kBAAkB,GAAE,wBAAwC,GAC3D,IAAI,CASN;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,UAAU,EAAE,sBAAsB,GACjC,IAAI,CAGN;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,CAaN"}
@@ -0,0 +1,47 @@
1
+ export function clearCanvasTarget(dest) {
2
+ const ctx = dest.context;
3
+ ctx.save();
4
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
5
+ ctx.globalAlpha = 1;
6
+ ctx.globalCompositeOperation = 'source-over';
7
+ ctx.filter = 'none';
8
+ ctx.clearRect(0, 0, dest.width, dest.height);
9
+ ctx.restore();
10
+ }
11
+ export function compositeCanvasImage(dest, source, dx = 0, dy = 0, compositeOperation = 'source-over') {
12
+ const ctx = dest.context;
13
+ ctx.save();
14
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
15
+ ctx.globalAlpha = 1;
16
+ ctx.globalCompositeOperation = compositeOperation;
17
+ ctx.filter = 'none';
18
+ ctx.drawImage(source.canvas, dx, dy);
19
+ ctx.restore();
20
+ }
21
+ export function compositeCanvasSourceMode(dest, source, sourceMode) {
22
+ if (sourceMode === 'hide')
23
+ return;
24
+ compositeCanvasImage(dest, source, 0, 0, sourceMode === 'knockout' ? 'destination-out' : 'source-over');
25
+ }
26
+ export function drawCanvasTintedAlphaMask(dest, source, color, alpha, strength) {
27
+ const ctx = dest.context;
28
+ ctx.save();
29
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
30
+ ctx.globalAlpha = 1;
31
+ ctx.globalCompositeOperation = 'source-over';
32
+ ctx.filter = 'none';
33
+ ctx.clearRect(0, 0, dest.width, dest.height);
34
+ ctx.drawImage(source.canvas, 0, 0);
35
+ ctx.globalCompositeOperation = 'source-in';
36
+ ctx.fillStyle = cssRgbaFromColor(color, alpha * strength);
37
+ ctx.fillRect(0, 0, dest.width, dest.height);
38
+ ctx.restore();
39
+ }
40
+ function cssRgbaFromColor(color, alpha) {
41
+ const r = (color >> 16) & 0xff;
42
+ const g = (color >> 8) & 0xff;
43
+ const b = color & 0xff;
44
+ const a = Math.max(0, Math.min(1, alpha));
45
+ return `rgba(${r},${g},${b},${a.toFixed(3)})`;
46
+ }
47
+ //# sourceMappingURL=canvasSourceModeCompositing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasSourceModeCompositing.js","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/effects-canvas",
3
- "version": "0.2.0",
3
+ "version": "0.2.1-next.410.a23f189",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,11 +32,11 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/adjustments": "0.2.0",
36
- "@flighthq/displayobject-canvas": "0.2.0",
37
- "@flighthq/effects": "0.2.0",
38
- "@flighthq/geometry": "0.2.0",
39
- "@flighthq/types": "0.2.0"
35
+ "@flighthq/adjustments": "0.2.1-next.410.a23f189",
36
+ "@flighthq/displayobject-canvas": "0.2.1-next.410.a23f189",
37
+ "@flighthq/effects": "0.2.1-next.410.a23f189",
38
+ "@flighthq/geometry": "0.2.1-next.410.a23f189",
39
+ "@flighthq/types": "0.2.1-next.410.a23f189"
40
40
  },
41
41
  "devDependencies": {
42
42
  "typescript": "^5.3.0"
@@ -1,9 +1,69 @@
1
+ vi.hoisted(() => {
2
+ vi.resetModules();
3
+ });
4
+
5
+ vi.mock('./canvasEffectCompositing', () => ({
6
+ drawCanvasEffectPass: vi.fn(),
7
+ }));
8
+
9
+ vi.mock('./canvasRenderEffectPipeline', () => {
10
+ let nextTargetId = 0;
11
+ return {
12
+ acquireCanvasRenderTarget: vi.fn((_pool, width, height) => ({
13
+ id: `scratch-${nextTargetId++}`,
14
+ canvas: {},
15
+ context: {},
16
+ width,
17
+ height,
18
+ })),
19
+ createCanvasRenderTargetPool: vi.fn(() => ({ free: [], inUse: [] })),
20
+ releaseCanvasRenderTarget: vi.fn(),
21
+ };
22
+ });
23
+
24
+ vi.mock('./canvasSourceModeCompositing', () => ({
25
+ clearCanvasTarget: vi.fn(),
26
+ compositeCanvasImage: vi.fn(),
27
+ compositeCanvasSourceMode: vi.fn(),
28
+ drawCanvasTintedAlphaMask: vi.fn(),
29
+ }));
30
+
1
31
  import { applyDropShadowEffectToCanvas, defaultCanvasDropShadowEffectRunner } from './canvasDropShadowEffect';
32
+ import { drawCanvasEffectPass } from './canvasEffectCompositing';
33
+ import { compositeCanvasSourceMode } from './canvasSourceModeCompositing';
2
34
 
3
35
  describe('applyDropShadowEffectToCanvas', () => {
4
36
  it('is a function', () => {
5
37
  expect(typeof applyDropShadowEffectToCanvas).toBe('function');
6
38
  });
39
+
40
+ it('uses the CSS drop-shadow path for default draw mode', () => {
41
+ const source = createTarget('source');
42
+ const dest = createTarget('dest');
43
+
44
+ applyDropShadowEffectToCanvas(source, dest, { kind: 'DropShadowEffect' });
45
+
46
+ expect(drawCanvasEffectPass).toHaveBeenCalledWith(dest, source, 'drop-shadow(3px 3px 4px rgba(0,0,0,1.000))');
47
+ expect(compositeCanvasSourceMode).not.toHaveBeenCalled();
48
+ });
49
+
50
+ it('routes hide mode through explicit source-mode compositing', () => {
51
+ const source = createTarget('source');
52
+ const dest = createTarget('dest');
53
+
54
+ applyDropShadowEffectToCanvas(source, dest, { kind: 'DropShadowEffect', sourceMode: 'hide' });
55
+
56
+ expect(compositeCanvasSourceMode).toHaveBeenCalledWith(dest, source, 'hide');
57
+ });
58
+
59
+ it('routes knockout mode through explicit source-mode compositing', () => {
60
+ const source = createTarget('source');
61
+ const dest = createTarget('dest');
62
+
63
+ applyDropShadowEffectToCanvas(source, dest, { kind: 'DropShadowEffect', sourceMode: 'knockout' });
64
+
65
+ expect(compositeCanvasSourceMode).toHaveBeenCalledWith(dest, source, 'knockout');
66
+ });
7
67
  });
8
68
 
9
69
  describe('defaultCanvasDropShadowEffectRunner', () => {
@@ -11,3 +71,18 @@ describe('defaultCanvasDropShadowEffectRunner', () => {
11
71
  expect(typeof defaultCanvasDropShadowEffectRunner).toBe('function');
12
72
  });
13
73
  });
74
+
75
+ beforeEach(() => {
76
+ vi.clearAllMocks();
77
+ });
78
+
79
+ afterAll(() => {
80
+ vi.doUnmock('./canvasEffectCompositing');
81
+ vi.doUnmock('./canvasRenderEffectPipeline');
82
+ vi.doUnmock('./canvasSourceModeCompositing');
83
+ vi.resetModules();
84
+ });
85
+
86
+ function createTarget(id: string, width = 32, height = 16): never {
87
+ return { id, canvas: {}, context: {}, width, height } as never;
88
+ }
@@ -8,6 +8,14 @@ describe('computeDropShadowEffectCss', () => {
8
8
  it('emits the default drop-shadow string', () => {
9
9
  expect(computeDropShadowEffectCss({ kind: 'DropShadowEffect' })).toBe('drop-shadow(3px 3px 4px rgba(0,0,0,1.000))');
10
10
  });
11
+
12
+ it('returns null for hide because CSS drop-shadow includes the source object', () => {
13
+ expect(computeDropShadowEffectCss({ kind: 'DropShadowEffect', sourceMode: 'hide' })).toBeNull();
14
+ });
15
+
16
+ it('returns null for knockout because CSS drop-shadow includes the source object', () => {
17
+ expect(computeDropShadowEffectCss({ kind: 'DropShadowEffect', sourceMode: 'knockout' })).toBeNull();
18
+ });
11
19
  });
12
20
 
13
21
  describe('computeOuterGlowEffectCss', () => {
@@ -18,4 +26,9 @@ describe('computeOuterGlowEffectCss', () => {
18
26
  it('emits the default outer-glow string', () => {
19
27
  expect(computeOuterGlowEffectCss({ kind: 'OuterGlowEffect' })).toBe('drop-shadow(0px 0px 6px rgba(255,0,0,1.000))');
20
28
  });
29
+
30
+ it('returns null for non-draw source modes', () => {
31
+ expect(computeOuterGlowEffectCss({ kind: 'OuterGlowEffect', sourceMode: 'hide' })).toBeNull();
32
+ expect(computeOuterGlowEffectCss({ kind: 'OuterGlowEffect', sourceMode: 'knockout' })).toBeNull();
33
+ });
21
34
  });
@@ -1,9 +1,69 @@
1
+ vi.hoisted(() => {
2
+ vi.resetModules();
3
+ });
4
+
5
+ vi.mock('./canvasEffectCompositing', () => ({
6
+ drawCanvasEffectPass: vi.fn(),
7
+ }));
8
+
9
+ vi.mock('./canvasRenderEffectPipeline', () => {
10
+ let nextTargetId = 0;
11
+ return {
12
+ acquireCanvasRenderTarget: vi.fn((_pool, width, height) => ({
13
+ id: `scratch-${nextTargetId++}`,
14
+ canvas: {},
15
+ context: {},
16
+ width,
17
+ height,
18
+ })),
19
+ createCanvasRenderTargetPool: vi.fn(() => ({ free: [], inUse: [] })),
20
+ releaseCanvasRenderTarget: vi.fn(),
21
+ };
22
+ });
23
+
24
+ vi.mock('./canvasSourceModeCompositing', () => ({
25
+ clearCanvasTarget: vi.fn(),
26
+ compositeCanvasImage: vi.fn(),
27
+ compositeCanvasSourceMode: vi.fn(),
28
+ drawCanvasTintedAlphaMask: vi.fn(),
29
+ }));
30
+
31
+ import { drawCanvasEffectPass } from './canvasEffectCompositing';
1
32
  import { applyOuterGlowEffectToCanvas, defaultCanvasOuterGlowEffectRunner } from './canvasOuterGlowEffect';
33
+ import { compositeCanvasSourceMode } from './canvasSourceModeCompositing';
2
34
 
3
35
  describe('applyOuterGlowEffectToCanvas', () => {
4
36
  it('is a function', () => {
5
37
  expect(typeof applyOuterGlowEffectToCanvas).toBe('function');
6
38
  });
39
+
40
+ it('uses the CSS drop-shadow path for default draw mode', () => {
41
+ const source = createTarget('source');
42
+ const dest = createTarget('dest');
43
+
44
+ applyOuterGlowEffectToCanvas(source, dest, { kind: 'OuterGlowEffect' });
45
+
46
+ expect(drawCanvasEffectPass).toHaveBeenCalledWith(dest, source, 'drop-shadow(0px 0px 6px rgba(255,0,0,1.000))');
47
+ expect(compositeCanvasSourceMode).not.toHaveBeenCalled();
48
+ });
49
+
50
+ it('routes hide mode through explicit source-mode compositing', () => {
51
+ const source = createTarget('source');
52
+ const dest = createTarget('dest');
53
+
54
+ applyOuterGlowEffectToCanvas(source, dest, { kind: 'OuterGlowEffect', sourceMode: 'hide' });
55
+
56
+ expect(compositeCanvasSourceMode).toHaveBeenCalledWith(dest, source, 'hide');
57
+ });
58
+
59
+ it('routes knockout mode through explicit source-mode compositing', () => {
60
+ const source = createTarget('source');
61
+ const dest = createTarget('dest');
62
+
63
+ applyOuterGlowEffectToCanvas(source, dest, { kind: 'OuterGlowEffect', sourceMode: 'knockout' });
64
+
65
+ expect(compositeCanvasSourceMode).toHaveBeenCalledWith(dest, source, 'knockout');
66
+ });
7
67
  });
8
68
 
9
69
  describe('defaultCanvasOuterGlowEffectRunner', () => {
@@ -11,3 +71,18 @@ describe('defaultCanvasOuterGlowEffectRunner', () => {
11
71
  expect(typeof defaultCanvasOuterGlowEffectRunner).toBe('function');
12
72
  });
13
73
  });
74
+
75
+ beforeEach(() => {
76
+ vi.clearAllMocks();
77
+ });
78
+
79
+ afterAll(() => {
80
+ vi.doUnmock('./canvasEffectCompositing');
81
+ vi.doUnmock('./canvasRenderEffectPipeline');
82
+ vi.doUnmock('./canvasSourceModeCompositing');
83
+ vi.resetModules();
84
+ });
85
+
86
+ function createTarget(id: string, width = 32, height = 16): never {
87
+ return { id, canvas: {}, context: {}, width, height } as never;
88
+ }
@@ -0,0 +1,30 @@
1
+ import {
2
+ clearCanvasTarget,
3
+ compositeCanvasImage,
4
+ compositeCanvasSourceMode,
5
+ drawCanvasTintedAlphaMask,
6
+ } from './canvasSourceModeCompositing';
7
+
8
+ describe('clearCanvasTarget', () => {
9
+ it('is a function', () => {
10
+ expect(typeof clearCanvasTarget).toBe('function');
11
+ });
12
+ });
13
+
14
+ describe('compositeCanvasImage', () => {
15
+ it('is a function', () => {
16
+ expect(typeof compositeCanvasImage).toBe('function');
17
+ });
18
+ });
19
+
20
+ describe('compositeCanvasSourceMode', () => {
21
+ it('is a function', () => {
22
+ expect(typeof compositeCanvasSourceMode).toBe('function');
23
+ });
24
+ });
25
+
26
+ describe('drawCanvasTintedAlphaMask', () => {
27
+ it('is a function', () => {
28
+ expect(typeof drawCanvasTintedAlphaMask).toBe('function');
29
+ });
30
+ });