@flighthq/effects-canvas 0.3.0-next.906.07cea63 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvasBevelEffect.d.ts +7 -0
- package/dist/canvasBevelEffect.d.ts.map +1 -0
- package/dist/canvasBevelEffect.js +76 -0
- package/dist/canvasBevelEffect.js.map +1 -0
- package/dist/canvasBlendEffect.d.ts +9 -0
- package/dist/canvasBlendEffect.d.ts.map +1 -0
- package/dist/canvasBlendEffect.js +89 -0
- package/dist/canvasBlendEffect.js.map +1 -0
- package/dist/canvasBloomEffect.d.ts +2 -1
- package/dist/canvasBloomEffect.d.ts.map +1 -1
- package/dist/canvasBloomEffect.js +4 -0
- package/dist/canvasBloomEffect.js.map +1 -1
- package/dist/canvasBlurEffect.d.ts +2 -1
- package/dist/canvasBlurEffect.d.ts.map +1 -1
- package/dist/canvasBlurEffect.js +4 -0
- package/dist/canvasBlurEffect.js.map +1 -1
- package/dist/canvasColorMatrixPass.d.ts +1 -0
- package/dist/canvasColorMatrixPass.d.ts.map +1 -1
- package/dist/canvasColorMatrixPass.js +22 -16
- package/dist/canvasColorMatrixPass.js.map +1 -1
- package/dist/canvasCompositeEffect.d.ts +6 -0
- package/dist/canvasCompositeEffect.d.ts.map +1 -0
- package/dist/canvasCompositeEffect.js +71 -0
- package/dist/canvasCompositeEffect.js.map +1 -0
- package/dist/canvasDropShadowEffect.d.ts +2 -1
- package/dist/canvasDropShadowEffect.d.ts.map +1 -1
- package/dist/canvasDropShadowEffect.js +4 -0
- package/dist/canvasDropShadowEffect.js.map +1 -1
- package/dist/canvasFilmGrainEffect.d.ts +2 -1
- package/dist/canvasFilmGrainEffect.d.ts.map +1 -1
- package/dist/canvasFilmGrainEffect.js +4 -0
- package/dist/canvasFilmGrainEffect.js.map +1 -1
- package/dist/canvasGradientBevelEffect.d.ts +6 -0
- package/dist/canvasGradientBevelEffect.d.ts.map +1 -0
- package/dist/canvasGradientBevelEffect.js +62 -0
- package/dist/canvasGradientBevelEffect.js.map +1 -0
- package/dist/canvasGradientGlowEffect.d.ts +6 -0
- package/dist/canvasGradientGlowEffect.d.ts.map +1 -0
- package/dist/canvasGradientGlowEffect.js +36 -0
- package/dist/canvasGradientGlowEffect.js.map +1 -0
- package/dist/canvasGradientRamp.d.ts +4 -0
- package/dist/canvasGradientRamp.d.ts.map +1 -0
- package/dist/canvasGradientRamp.js +75 -0
- package/dist/canvasGradientRamp.js.map +1 -0
- package/dist/canvasInnerGlowEffect.d.ts +6 -0
- package/dist/canvasInnerGlowEffect.d.ts.map +1 -0
- package/dist/canvasInnerGlowEffect.js +37 -0
- package/dist/canvasInnerGlowEffect.js.map +1 -0
- package/dist/canvasInnerShadowEffect.d.ts +6 -0
- package/dist/canvasInnerShadowEffect.d.ts.map +1 -0
- package/dist/canvasInnerShadowEffect.js +43 -0
- package/dist/canvasInnerShadowEffect.js.map +1 -0
- package/dist/canvasOuterGlowEffect.d.ts +2 -1
- package/dist/canvasOuterGlowEffect.d.ts.map +1 -1
- package/dist/canvasOuterGlowEffect.js +4 -0
- package/dist/canvasOuterGlowEffect.js.map +1 -1
- package/dist/canvasPixelateEffect.d.ts +2 -1
- package/dist/canvasPixelateEffect.d.ts.map +1 -1
- package/dist/canvasPixelateEffect.js +4 -0
- package/dist/canvasPixelateEffect.js.map +1 -1
- package/dist/canvasRenderEffectPipeline.d.ts.map +1 -1
- package/dist/canvasRenderEffectPipeline.js +9 -3
- package/dist/canvasRenderEffectPipeline.js.map +1 -1
- package/dist/canvasRenderEffectRegistry.d.ts.map +1 -1
- package/dist/canvasRenderEffectRegistry.js +9 -12
- package/dist/canvasRenderEffectRegistry.js.map +1 -1
- package/dist/canvasRenderTextureEffect.d.ts +3 -0
- package/dist/canvasRenderTextureEffect.d.ts.map +1 -0
- package/dist/canvasRenderTextureEffect.js +31 -0
- package/dist/canvasRenderTextureEffect.js.map +1 -0
- package/dist/canvasScanlinesEffect.d.ts +2 -1
- package/dist/canvasScanlinesEffect.d.ts.map +1 -1
- package/dist/canvasScanlinesEffect.js +4 -0
- package/dist/canvasScanlinesEffect.js.map +1 -1
- package/dist/canvasSourceModeCompositing.d.ts +1 -0
- package/dist/canvasSourceModeCompositing.d.ts.map +1 -1
- package/dist/canvasSourceModeCompositing.js +24 -0
- package/dist/canvasSourceModeCompositing.js.map +1 -1
- package/dist/canvasVignetteEffect.d.ts +2 -1
- package/dist/canvasVignetteEffect.d.ts.map +1 -1
- package/dist/canvasVignetteEffect.js +4 -0
- package/dist/canvasVignetteEffect.js.map +1 -1
- package/dist/contract.d.ts +9 -31
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +9 -31
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
- package/src/canvasBevelEffect.test.ts +212 -0
- package/src/canvasBlendEffect.test.ts +235 -0
- package/src/canvasBloomEffect.test.ts +9 -1
- package/src/canvasBlurEffect.test.ts +12 -1
- package/src/canvasColorMatrixPass.test.ts +61 -11
- package/src/canvasCompositeEffect.test.ts +181 -0
- package/src/canvasDropShadowEffect.test.ts +15 -8
- package/src/canvasEffectRegistration.test.ts +27 -0
- package/src/canvasFilmGrainEffect.test.ts +9 -1
- package/src/canvasGradientBevelEffect.test.ts +180 -0
- package/src/canvasGradientGlowEffect.test.ts +125 -0
- package/src/canvasGradientRamp.test.ts +98 -0
- package/src/canvasInnerGlowEffect.test.ts +152 -0
- package/src/canvasInnerShadowEffect.test.ts +173 -0
- package/src/canvasOuterGlowEffect.test.ts +15 -8
- package/src/canvasPixelateEffect.test.ts +9 -1
- package/src/canvasRealizedEffectRegistration.test.ts +30 -0
- package/src/canvasRenderEffectPipeline.test.ts +38 -0
- package/src/canvasRenderEffectRegistry.test.ts +10 -9
- package/src/canvasRenderTextureEffect.test.ts +73 -0
- package/src/canvasScanlinesEffect.test.ts +9 -1
- package/src/canvasSourceModeCompositing.test.ts +40 -0
- package/src/canvasVignetteEffect.test.ts +9 -1
- package/dist/canvasBokehDepthOfFieldEffect.d.ts +0 -4
- package/dist/canvasBokehDepthOfFieldEffect.d.ts.map +0 -1
- package/dist/canvasBokehDepthOfFieldEffect.js +0 -10
- package/dist/canvasBokehDepthOfFieldEffect.js.map +0 -1
- package/dist/canvasCameraMotionBlurEffect.d.ts +0 -4
- package/dist/canvasCameraMotionBlurEffect.d.ts.map +0 -1
- package/dist/canvasCameraMotionBlurEffect.js +0 -11
- package/dist/canvasCameraMotionBlurEffect.js.map +0 -1
- package/dist/canvasChromaticAberrationEffect.d.ts +0 -4
- package/dist/canvasChromaticAberrationEffect.d.ts.map +0 -1
- package/dist/canvasChromaticAberrationEffect.js +0 -11
- package/dist/canvasChromaticAberrationEffect.js.map +0 -1
- package/dist/canvasConvolutionEffect.d.ts +0 -4
- package/dist/canvasConvolutionEffect.d.ts.map +0 -1
- package/dist/canvasConvolutionEffect.js +0 -11
- package/dist/canvasConvolutionEffect.js.map +0 -1
- package/dist/canvasCrtEffect.d.ts +0 -4
- package/dist/canvasCrtEffect.d.ts.map +0 -1
- package/dist/canvasCrtEffect.js +0 -11
- package/dist/canvasCrtEffect.js.map +0 -1
- package/dist/canvasDirectionalBlurEffect.d.ts +0 -4
- package/dist/canvasDirectionalBlurEffect.d.ts.map +0 -1
- package/dist/canvasDirectionalBlurEffect.js +0 -11
- package/dist/canvasDirectionalBlurEffect.js.map +0 -1
- package/dist/canvasDisplacementEffect.d.ts +0 -4
- package/dist/canvasDisplacementEffect.d.ts.map +0 -1
- package/dist/canvasDisplacementEffect.js +0 -10
- package/dist/canvasDisplacementEffect.js.map +0 -1
- package/dist/canvasDitherEffect.d.ts +0 -4
- package/dist/canvasDitherEffect.d.ts.map +0 -1
- package/dist/canvasDitherEffect.js +0 -11
- package/dist/canvasDitherEffect.js.map +0 -1
- package/dist/canvasFxaaEffect.d.ts +0 -4
- package/dist/canvasFxaaEffect.d.ts.map +0 -1
- package/dist/canvasFxaaEffect.js +0 -11
- package/dist/canvasFxaaEffect.js.map +0 -1
- package/dist/canvasGlitchEffect.d.ts +0 -4
- package/dist/canvasGlitchEffect.d.ts.map +0 -1
- package/dist/canvasGlitchEffect.js +0 -11
- package/dist/canvasGlitchEffect.js.map +0 -1
- package/dist/canvasGodRaysEffect.d.ts +0 -4
- package/dist/canvasGodRaysEffect.d.ts.map +0 -1
- package/dist/canvasGodRaysEffect.js +0 -11
- package/dist/canvasGodRaysEffect.js.map +0 -1
- package/dist/canvasHalftoneEffect.d.ts +0 -4
- package/dist/canvasHalftoneEffect.d.ts.map +0 -1
- package/dist/canvasHalftoneEffect.js +0 -10
- package/dist/canvasHalftoneEffect.js.map +0 -1
- package/dist/canvasKuwaharaEffect.d.ts +0 -4
- package/dist/canvasKuwaharaEffect.d.ts.map +0 -1
- package/dist/canvasKuwaharaEffect.js +0 -11
- package/dist/canvasKuwaharaEffect.js.map +0 -1
- package/dist/canvasLensDirtEffect.d.ts +0 -4
- package/dist/canvasLensDirtEffect.d.ts.map +0 -1
- package/dist/canvasLensDirtEffect.js +0 -11
- package/dist/canvasLensDirtEffect.js.map +0 -1
- package/dist/canvasLensDistortionEffect.d.ts +0 -4
- package/dist/canvasLensDistortionEffect.d.ts.map +0 -1
- package/dist/canvasLensDistortionEffect.js +0 -10
- package/dist/canvasLensDistortionEffect.js.map +0 -1
- package/dist/canvasLensFlareEffect.d.ts +0 -4
- package/dist/canvasLensFlareEffect.d.ts.map +0 -1
- package/dist/canvasLensFlareEffect.js +0 -11
- package/dist/canvasLensFlareEffect.js.map +0 -1
- package/dist/canvasMedianEffect.d.ts +0 -4
- package/dist/canvasMedianEffect.d.ts.map +0 -1
- package/dist/canvasMedianEffect.js +0 -11
- package/dist/canvasMedianEffect.js.map +0 -1
- package/dist/canvasMotionBlurEffect.d.ts +0 -4
- package/dist/canvasMotionBlurEffect.d.ts.map +0 -1
- package/dist/canvasMotionBlurEffect.js +0 -11
- package/dist/canvasMotionBlurEffect.js.map +0 -1
- package/dist/canvasOutlineEffect.d.ts +0 -4
- package/dist/canvasOutlineEffect.d.ts.map +0 -1
- package/dist/canvasOutlineEffect.js +0 -11
- package/dist/canvasOutlineEffect.js.map +0 -1
- package/dist/canvasPosterizeEffect.d.ts +0 -4
- package/dist/canvasPosterizeEffect.d.ts.map +0 -1
- package/dist/canvasPosterizeEffect.js +0 -10
- package/dist/canvasPosterizeEffect.js.map +0 -1
- package/dist/canvasRadialBlurEffect.d.ts +0 -4
- package/dist/canvasRadialBlurEffect.d.ts.map +0 -1
- package/dist/canvasRadialBlurEffect.js +0 -11
- package/dist/canvasRadialBlurEffect.js.map +0 -1
- package/dist/canvasScreenSpaceFogEffect.d.ts +0 -4
- package/dist/canvasScreenSpaceFogEffect.d.ts.map +0 -1
- package/dist/canvasScreenSpaceFogEffect.js +0 -10
- package/dist/canvasScreenSpaceFogEffect.js.map +0 -1
- package/dist/canvasSharpenEffect.d.ts +0 -4
- package/dist/canvasSharpenEffect.d.ts.map +0 -1
- package/dist/canvasSharpenEffect.js +0 -11
- package/dist/canvasSharpenEffect.js.map +0 -1
- package/dist/canvasSketchEffect.d.ts +0 -4
- package/dist/canvasSketchEffect.d.ts.map +0 -1
- package/dist/canvasSketchEffect.js +0 -11
- package/dist/canvasSketchEffect.js.map +0 -1
- package/dist/canvasSmaaEffect.d.ts +0 -4
- package/dist/canvasSmaaEffect.d.ts.map +0 -1
- package/dist/canvasSmaaEffect.js +0 -11
- package/dist/canvasSmaaEffect.js.map +0 -1
- package/dist/canvasSsaoEffect.d.ts +0 -4
- package/dist/canvasSsaoEffect.d.ts.map +0 -1
- package/dist/canvasSsaoEffect.js +0 -11
- package/dist/canvasSsaoEffect.js.map +0 -1
- package/dist/canvasSsrEffect.d.ts +0 -4
- package/dist/canvasSsrEffect.d.ts.map +0 -1
- package/dist/canvasSsrEffect.js +0 -11
- package/dist/canvasSsrEffect.js.map +0 -1
- package/dist/canvasTaaEffect.d.ts +0 -4
- package/dist/canvasTaaEffect.d.ts.map +0 -1
- package/dist/canvasTaaEffect.js +0 -11
- package/dist/canvasTaaEffect.js.map +0 -1
- package/dist/canvasTiltShiftEffect.d.ts +0 -4
- package/dist/canvasTiltShiftEffect.d.ts.map +0 -1
- package/dist/canvasTiltShiftEffect.js +0 -11
- package/dist/canvasTiltShiftEffect.js.map +0 -1
- package/dist/canvasToneMapEffect.d.ts +0 -4
- package/dist/canvasToneMapEffect.d.ts.map +0 -1
- package/dist/canvasToneMapEffect.js +0 -12
- package/dist/canvasToneMapEffect.js.map +0 -1
- package/dist/canvasWhiteBalanceEffect.d.ts +0 -4
- package/dist/canvasWhiteBalanceEffect.d.ts.map +0 -1
- package/dist/canvasWhiteBalanceEffect.js +0 -11
- package/dist/canvasWhiteBalanceEffect.js.map +0 -1
- package/src/canvasBokehDepthOfFieldEffect.test.ts +0 -16
- package/src/canvasCameraMotionBlurEffect.test.ts +0 -16
- package/src/canvasChromaticAberrationEffect.test.ts +0 -16
- package/src/canvasConvolutionEffect.test.ts +0 -13
- package/src/canvasCrtEffect.test.ts +0 -13
- package/src/canvasDirectionalBlurEffect.test.ts +0 -16
- package/src/canvasDisplacementEffect.test.ts +0 -13
- package/src/canvasDitherEffect.test.ts +0 -13
- package/src/canvasFxaaEffect.test.ts +0 -13
- package/src/canvasGlitchEffect.test.ts +0 -13
- package/src/canvasGodRaysEffect.test.ts +0 -13
- package/src/canvasHalftoneEffect.test.ts +0 -13
- package/src/canvasKuwaharaEffect.test.ts +0 -13
- package/src/canvasLensDirtEffect.test.ts +0 -13
- package/src/canvasLensDistortionEffect.test.ts +0 -16
- package/src/canvasLensFlareEffect.test.ts +0 -13
- package/src/canvasMedianEffect.test.ts +0 -13
- package/src/canvasMotionBlurEffect.test.ts +0 -13
- package/src/canvasOutlineEffect.test.ts +0 -13
- package/src/canvasPosterizeEffect.test.ts +0 -13
- package/src/canvasRadialBlurEffect.test.ts +0 -13
- package/src/canvasScreenSpaceFogEffect.test.ts +0 -16
- package/src/canvasSharpenEffect.test.ts +0 -13
- package/src/canvasSketchEffect.test.ts +0 -13
- package/src/canvasSmaaEffect.test.ts +0 -13
- package/src/canvasSsaoEffect.test.ts +0 -13
- package/src/canvasSsrEffect.test.ts +0 -13
- package/src/canvasTaaEffect.test.ts +0 -13
- package/src/canvasTiltShiftEffect.test.ts +0 -13
- package/src/canvasToneMapEffect.test.ts +0 -13
- package/src/canvasWhiteBalanceEffect.test.ts +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasRenderTextureEffect.js","sourceRoot":"","sources":["../src/canvasRenderTextureEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGjH,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,8FAA8F;AAC9F,gGAAgG;AAChG,gDAAgD;AAChD,MAAM,UAAU,uCAAuC,CACrD,KAAwB,EACxB,IAA6B,EAC7B,MAA+B,EAC/B,IAAmB,EACnB,OAAsB,EACtB,OAA8C;IAE9C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,IAAI,OAAO,GAAG,YAAY,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACpD,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YACvD,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAE,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { CanvasRenderEffectRunner, CanvasRenderTarget, ScanlinesEffect } from '@flighthq/types/contract';
|
|
1
|
+
import type { CanvasRenderEffectRunner, CanvasRenderState, CanvasRenderTarget, ScanlinesEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyScanlinesEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, effect: Readonly<ScanlinesEffect>): void;
|
|
3
3
|
export declare const defaultCanvasScanlinesEffectRunner: CanvasRenderEffectRunner;
|
|
4
|
+
export declare function registerCanvasScanlinesEffect(state: CanvasRenderState): void;
|
|
4
5
|
//# sourceMappingURL=canvasScanlinesEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasScanlinesEffect.d.ts","sourceRoot":"","sources":["../src/canvasScanlinesEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"canvasScanlinesEffect.d.ts","sourceRoot":"","sources":["../src/canvasScanlinesEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAOlC,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,CAuBN;AAED,eAAO,MAAM,kCAAkC,EAAE,wBAEhD,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAE5E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { drawCanvasEffectPass } from './canvasEffectCompositing';
|
|
2
|
+
import { registerCanvasRenderEffect } from './canvasRenderEffectRegistry';
|
|
2
3
|
// Scanlines (REAL): draw the scene, then overlay evenly spaced darkening bands. `count` horizontal
|
|
3
4
|
// lines span the frame; each darkens its row by `intensity` via a 'multiply' fill.
|
|
4
5
|
export function applyScanlinesEffectToCanvas(source, dest, effect) {
|
|
@@ -25,4 +26,7 @@ export function applyScanlinesEffectToCanvas(source, dest, effect) {
|
|
|
25
26
|
export const defaultCanvasScanlinesEffectRunner = (ctx, effect) => {
|
|
26
27
|
applyScanlinesEffectToCanvas(ctx.source, ctx.dest, effect);
|
|
27
28
|
};
|
|
29
|
+
export function registerCanvasScanlinesEffect(state) {
|
|
30
|
+
registerCanvasRenderEffect(state, 'ScanlinesEffect', defaultCanvasScanlinesEffectRunner);
|
|
31
|
+
}
|
|
28
32
|
//# sourceMappingURL=canvasScanlinesEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasScanlinesEffect.js","sourceRoot":"","sources":["../src/canvasScanlinesEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canvasScanlinesEffect.js","sourceRoot":"","sources":["../src/canvasScanlinesEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,mGAAmG;AACnG,mFAAmF;AACnF,MAAM,UAAU,4BAA4B,CAC1C,MAAoC,EACpC,IAAkC,EAClC,MAAiC;IAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC;IAEpE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;IACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;IAE9C,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,GAAG,CAAC,wBAAwB,GAAG,UAAU,CAAC;IAC1C,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IACvC,GAAG,CAAC,SAAS,GAAG,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,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;AAEF,MAAM,UAAU,6BAA6B,CAAC,KAAwB;IACpE,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,kCAAkC,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -2,5 +2,6 @@ import type { CanvasEffectSourceMode, CanvasRenderTarget } from '@flighthq/types
|
|
|
2
2
|
export declare function clearCanvasTarget(dest: Readonly<CanvasRenderTarget>): void;
|
|
3
3
|
export declare function compositeCanvasImage(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, dx?: number, dy?: number, compositeOperation?: GlobalCompositeOperation): void;
|
|
4
4
|
export declare function compositeCanvasSourceMode(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, sourceMode: CanvasEffectSourceMode): void;
|
|
5
|
+
export declare function drawCanvasInvertedTintedAlphaMask(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, color: number, alpha: number, strength: number, offsetX?: number, offsetY?: number): void;
|
|
5
6
|
export declare function drawCanvasTintedAlphaMask(dest: Readonly<CanvasRenderTarget>, source: Readonly<CanvasRenderTarget>, color: number, alpha: number, strength: number): void;
|
|
6
7
|
//# sourceMappingURL=canvasSourceModeCompositing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasSourceModeCompositing.d.ts","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,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"}
|
|
1
|
+
{"version":3,"file":"canvasSourceModeCompositing.d.ts","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,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;AAUD,wBAAgB,iCAAiC,CAC/C,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,EAChB,OAAO,SAAI,EACX,OAAO,SAAI,GACV,IAAI,CAeN;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"}
|
|
@@ -23,6 +23,30 @@ export function compositeCanvasSourceMode(dest, source, sourceMode) {
|
|
|
23
23
|
return;
|
|
24
24
|
compositeCanvasImage(dest, source, 0, 0, sourceMode === 'knockout' ? 'destination-out' : 'source-over');
|
|
25
25
|
}
|
|
26
|
+
// The complement of drawCanvasTintedAlphaMask: tint everywhere the source is NOT, with alpha
|
|
27
|
+
// proportional to the inverted source alpha. This is what makes an INNER effect inner — the glow or
|
|
28
|
+
// shadow originates outside the silhouette and is later blurred across the boundary and clipped back to
|
|
29
|
+
// the shape, so the light appears to fall inward from the edge. Blurring the shape's own silhouette
|
|
30
|
+
// instead produces an outer effect no amount of clipping can turn inward.
|
|
31
|
+
//
|
|
32
|
+
// Realized as a full-target fill knocked out by the source rather than a per-pixel inversion, which is
|
|
33
|
+
// the same result without a getImageData round trip.
|
|
34
|
+
export function drawCanvasInvertedTintedAlphaMask(dest, source, color, alpha, strength, offsetX = 0, offsetY = 0) {
|
|
35
|
+
const ctx = dest.context;
|
|
36
|
+
ctx.save();
|
|
37
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
38
|
+
ctx.globalAlpha = 1;
|
|
39
|
+
ctx.globalCompositeOperation = 'source-over';
|
|
40
|
+
ctx.filter = 'none';
|
|
41
|
+
ctx.clearRect(0, 0, dest.width, dest.height);
|
|
42
|
+
ctx.fillStyle = cssRgbaFromColor(color, Math.min(1, alpha * strength));
|
|
43
|
+
ctx.fillRect(0, 0, dest.width, dest.height);
|
|
44
|
+
// Knocking out with the source is the inversion. An offset here shifts which side of the boundary the
|
|
45
|
+
// tint survives on, which is how an inner shadow gets its direction.
|
|
46
|
+
ctx.globalCompositeOperation = 'destination-out';
|
|
47
|
+
ctx.drawImage(source.canvas, offsetX, offsetY);
|
|
48
|
+
ctx.restore();
|
|
49
|
+
}
|
|
26
50
|
export function drawCanvasTintedAlphaMask(dest, source, color, alpha, strength) {
|
|
27
51
|
const ctx = dest.context;
|
|
28
52
|
ctx.save();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasSourceModeCompositing.js","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvasSourceModeCompositing.js","sourceRoot":"","sources":["../src/canvasSourceModeCompositing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { CanvasRenderEffectRunner, CanvasRenderTarget, VignetteEffect } from '@flighthq/types/contract';
|
|
1
|
+
import type { CanvasRenderEffectRunner, CanvasRenderState, CanvasRenderTarget, VignetteEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyVignetteEffectToCanvas(source: Readonly<CanvasRenderTarget>, dest: Readonly<CanvasRenderTarget>, effect: Readonly<VignetteEffect>): void;
|
|
3
3
|
export declare const defaultCanvasVignetteEffectRunner: CanvasRenderEffectRunner;
|
|
4
|
+
export declare function registerCanvasVignetteEffect(state: CanvasRenderState): void;
|
|
4
5
|
//# sourceMappingURL=canvasVignetteEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasVignetteEffect.d.ts","sourceRoot":"","sources":["../src/canvasVignetteEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"canvasVignetteEffect.d.ts","sourceRoot":"","sources":["../src/canvasVignetteEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CAoCN;AAED,eAAO,MAAM,iCAAiC,EAAE,wBAE/C,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAE3E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { drawCanvasEffectPass } from './canvasEffectCompositing';
|
|
2
|
+
import { registerCanvasRenderEffect } from './canvasRenderEffectRegistry';
|
|
2
3
|
// Vignette (REAL): draw the scene, then overlay a radial gradient — transparent inside `radius`,
|
|
3
4
|
// ramping to the vignette color over `softness` toward the corners — using the 'multiply' composite op
|
|
4
5
|
// so the edges darken toward the color. Intensity and the color's alpha scale the darkening.
|
|
@@ -38,4 +39,7 @@ export function applyVignetteEffectToCanvas(source, dest, effect) {
|
|
|
38
39
|
export const defaultCanvasVignetteEffectRunner = (ctx, effect) => {
|
|
39
40
|
applyVignetteEffectToCanvas(ctx.source, ctx.dest, effect);
|
|
40
41
|
};
|
|
42
|
+
export function registerCanvasVignetteEffect(state) {
|
|
43
|
+
registerCanvasRenderEffect(state, 'VignetteEffect', defaultCanvasVignetteEffectRunner);
|
|
44
|
+
}
|
|
41
45
|
//# sourceMappingURL=canvasVignetteEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasVignetteEffect.js","sourceRoot":"","sources":["../src/canvasVignetteEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canvasVignetteEffect.js","sourceRoot":"","sources":["../src/canvasVignetteEffect.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -1,46 +1,24 @@
|
|
|
1
1
|
export * from './canvasColorMatrixPass';
|
|
2
|
+
export * from './canvasBevelEffect';
|
|
3
|
+
export * from './canvasBlendEffect';
|
|
2
4
|
export * from './canvasBloomEffect';
|
|
3
5
|
export * from './canvasBlurEffect';
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './canvasCameraMotionBlurEffect';
|
|
6
|
-
export * from './canvasChromaticAberrationEffect';
|
|
7
|
-
export * from './canvasConvolutionEffect';
|
|
8
|
-
export * from './canvasCrtEffect';
|
|
9
|
-
export * from './canvasDirectionalBlurEffect';
|
|
10
|
-
export * from './canvasDisplacementEffect';
|
|
6
|
+
export * from './canvasCompositeEffect';
|
|
11
7
|
export * from './canvasDropShadowEffect';
|
|
12
|
-
export * from './canvasDitherEffect';
|
|
13
8
|
export * from './canvasEffectCompositing';
|
|
14
9
|
export * from './canvasEffectDropShadowCss';
|
|
15
10
|
export * from './canvasFilmGrainEffect';
|
|
16
|
-
export * from './
|
|
17
|
-
export * from './
|
|
18
|
-
export * from './
|
|
19
|
-
export * from './
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './canvasLensDirtEffect';
|
|
22
|
-
export * from './canvasLensDistortionEffect';
|
|
23
|
-
export * from './canvasLensFlareEffect';
|
|
24
|
-
export * from './canvasMedianEffect';
|
|
25
|
-
export * from './canvasMotionBlurEffect';
|
|
11
|
+
export * from './canvasGradientBevelEffect';
|
|
12
|
+
export * from './canvasGradientGlowEffect';
|
|
13
|
+
export * from './canvasGradientRamp';
|
|
14
|
+
export * from './canvasInnerGlowEffect';
|
|
15
|
+
export * from './canvasInnerShadowEffect';
|
|
26
16
|
export * from './canvasOuterGlowEffect';
|
|
27
|
-
export * from './canvasOutlineEffect';
|
|
28
17
|
export * from './canvasPixelateEffect';
|
|
29
|
-
export * from './canvasPosterizeEffect';
|
|
30
|
-
export * from './canvasRadialBlurEffect';
|
|
31
18
|
export * from './canvasRenderEffectPipeline';
|
|
32
19
|
export * from './canvasRenderEffectRegistry';
|
|
20
|
+
export * from './canvasRenderTextureEffect';
|
|
33
21
|
export * from './canvasScanlinesEffect';
|
|
34
|
-
export * from './canvasScreenSpaceFogEffect';
|
|
35
|
-
export * from './canvasSharpenEffect';
|
|
36
|
-
export * from './canvasSketchEffect';
|
|
37
|
-
export * from './canvasSmaaEffect';
|
|
38
|
-
export * from './canvasSsaoEffect';
|
|
39
|
-
export * from './canvasSsrEffect';
|
|
40
|
-
export * from './canvasTaaEffect';
|
|
41
|
-
export * from './canvasTiltShiftEffect';
|
|
42
|
-
export * from './canvasToneMapEffect';
|
|
43
22
|
export * from './canvasVignetteEffect';
|
|
44
|
-
export * from './canvasWhiteBalanceEffect';
|
|
45
23
|
export * from './canvasColorLutPass';
|
|
46
24
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,46 +1,24 @@
|
|
|
1
1
|
export * from './canvasColorMatrixPass';
|
|
2
|
+
export * from './canvasBevelEffect';
|
|
3
|
+
export * from './canvasBlendEffect';
|
|
2
4
|
export * from './canvasBloomEffect';
|
|
3
5
|
export * from './canvasBlurEffect';
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './canvasCameraMotionBlurEffect';
|
|
6
|
-
export * from './canvasChromaticAberrationEffect';
|
|
7
|
-
export * from './canvasConvolutionEffect';
|
|
8
|
-
export * from './canvasCrtEffect';
|
|
9
|
-
export * from './canvasDirectionalBlurEffect';
|
|
10
|
-
export * from './canvasDisplacementEffect';
|
|
6
|
+
export * from './canvasCompositeEffect';
|
|
11
7
|
export * from './canvasDropShadowEffect';
|
|
12
|
-
export * from './canvasDitherEffect';
|
|
13
8
|
export * from './canvasEffectCompositing';
|
|
14
9
|
export * from './canvasEffectDropShadowCss';
|
|
15
10
|
export * from './canvasFilmGrainEffect';
|
|
16
|
-
export * from './
|
|
17
|
-
export * from './
|
|
18
|
-
export * from './
|
|
19
|
-
export * from './
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './canvasLensDirtEffect';
|
|
22
|
-
export * from './canvasLensDistortionEffect';
|
|
23
|
-
export * from './canvasLensFlareEffect';
|
|
24
|
-
export * from './canvasMedianEffect';
|
|
25
|
-
export * from './canvasMotionBlurEffect';
|
|
11
|
+
export * from './canvasGradientBevelEffect';
|
|
12
|
+
export * from './canvasGradientGlowEffect';
|
|
13
|
+
export * from './canvasGradientRamp';
|
|
14
|
+
export * from './canvasInnerGlowEffect';
|
|
15
|
+
export * from './canvasInnerShadowEffect';
|
|
26
16
|
export * from './canvasOuterGlowEffect';
|
|
27
|
-
export * from './canvasOutlineEffect';
|
|
28
17
|
export * from './canvasPixelateEffect';
|
|
29
|
-
export * from './canvasPosterizeEffect';
|
|
30
|
-
export * from './canvasRadialBlurEffect';
|
|
31
18
|
export * from './canvasRenderEffectPipeline';
|
|
32
19
|
export * from './canvasRenderEffectRegistry';
|
|
20
|
+
export * from './canvasRenderTextureEffect';
|
|
33
21
|
export * from './canvasScanlinesEffect';
|
|
34
|
-
export * from './canvasScreenSpaceFogEffect';
|
|
35
|
-
export * from './canvasSharpenEffect';
|
|
36
|
-
export * from './canvasSketchEffect';
|
|
37
|
-
export * from './canvasSmaaEffect';
|
|
38
|
-
export * from './canvasSsaoEffect';
|
|
39
|
-
export * from './canvasSsrEffect';
|
|
40
|
-
export * from './canvasTaaEffect';
|
|
41
|
-
export * from './canvasTiltShiftEffect';
|
|
42
|
-
export * from './canvasToneMapEffect';
|
|
43
22
|
export * from './canvasVignetteEffect';
|
|
44
|
-
export * from './canvasWhiteBalanceEffect';
|
|
45
23
|
export * from './canvasColorLutPass';
|
|
46
24
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { beginCanvasRenderEffectPipeline, createCanvasRenderEffectPipeline, defaultCanvasBloomEffectRunner, defaultCanvasFilmGrainEffectRunner,
|
|
1
|
+
export { applyCanvasGradientRampLookup, applyCanvasRenderEffectsToRenderTexture, beginCanvasRenderEffectPipeline, buildCanvasGradientRamp, clipCanvasBevelBand, createCanvasRenderEffectPipeline, defaultCanvasBevelEffectRunner, defaultCanvasBlendEffectRunner, defaultCanvasBloomEffectRunner, defaultCanvasBlurEffectRunner, defaultCanvasCompositeEffectRunner, defaultCanvasDropShadowEffectRunner, defaultCanvasFilmGrainEffectRunner, defaultCanvasGradientBevelEffectRunner, defaultCanvasGradientGlowEffectRunner, defaultCanvasInnerGlowEffectRunner, defaultCanvasInnerShadowEffectRunner, defaultCanvasOuterGlowEffectRunner, defaultCanvasPixelateEffectRunner, defaultCanvasScanlinesEffectRunner, defaultCanvasVignetteEffectRunner, endCanvasRenderEffectPipeline, getCanvasBlendEffectBackdrop, getCanvasBlendEffectCompositeOperation, getCanvasCompositeEffectOperation, registerCanvasBevelEffect, registerCanvasBlendEffect, registerCanvasBlendEffectBackdrop, registerCanvasBloomEffect, registerCanvasBlurEffect, registerCanvasCompositeEffect, registerCanvasDropShadowEffect, registerCanvasFilmGrainEffect, registerCanvasGradientBevelEffect, registerCanvasGradientGlowEffect, registerCanvasInnerGlowEffect, registerCanvasInnerShadowEffect, registerCanvasOuterGlowEffect, registerCanvasPixelateEffect, registerCanvasRenderEffect, registerCanvasScanlinesEffect, registerCanvasVignetteEffect, unregisterCanvasBlendEffectBackdrop, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,kCAAkC,EAClC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC9B,8BAA8B,EAC9B,6BAA6B,EAC7B,kCAAkC,EAClC,mCAAmC,EACnC,kCAAkC,EAClC,sCAAsC,EACtC,qCAAqC,EACrC,kCAAkC,EAClC,oCAAoC,EACpC,kCAAkC,EAClC,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EACjC,6BAA6B,EAC7B,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,iCAAiC,EACjC,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { beginCanvasRenderEffectPipeline, createCanvasRenderEffectPipeline, defaultCanvasBloomEffectRunner, defaultCanvasFilmGrainEffectRunner,
|
|
1
|
+
export { applyCanvasGradientRampLookup, applyCanvasRenderEffectsToRenderTexture, beginCanvasRenderEffectPipeline, buildCanvasGradientRamp, clipCanvasBevelBand, createCanvasRenderEffectPipeline, defaultCanvasBevelEffectRunner, defaultCanvasBlendEffectRunner, defaultCanvasBloomEffectRunner, defaultCanvasBlurEffectRunner, defaultCanvasCompositeEffectRunner, defaultCanvasDropShadowEffectRunner, defaultCanvasFilmGrainEffectRunner, defaultCanvasGradientBevelEffectRunner, defaultCanvasGradientGlowEffectRunner, defaultCanvasInnerGlowEffectRunner, defaultCanvasInnerShadowEffectRunner, defaultCanvasOuterGlowEffectRunner, defaultCanvasPixelateEffectRunner, defaultCanvasScanlinesEffectRunner, defaultCanvasVignetteEffectRunner, endCanvasRenderEffectPipeline, getCanvasBlendEffectBackdrop, getCanvasBlendEffectCompositeOperation, getCanvasCompositeEffectOperation, registerCanvasBevelEffect, registerCanvasBlendEffect, registerCanvasBlendEffectBackdrop, registerCanvasBloomEffect, registerCanvasBlurEffect, registerCanvasCompositeEffect, registerCanvasDropShadowEffect, registerCanvasFilmGrainEffect, registerCanvasGradientBevelEffect, registerCanvasGradientGlowEffect, registerCanvasInnerGlowEffect, registerCanvasInnerShadowEffect, registerCanvasOuterGlowEffect, registerCanvasPixelateEffect, registerCanvasRenderEffect, registerCanvasScanlinesEffect, registerCanvasVignetteEffect, unregisterCanvasBlendEffectBackdrop, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,kCAAkC,EAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC9B,8BAA8B,EAC9B,6BAA6B,EAC7B,kCAAkC,EAClC,mCAAmC,EACnC,kCAAkC,EAClC,sCAAsC,EACtC,qCAAqC,EACrC,kCAAkC,EAClC,oCAAoC,EACpC,kCAAkC,EAClC,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EACjC,6BAA6B,EAC7B,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,iCAAiC,EACjC,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/effects-canvas",
|
|
3
|
-
"version": "0.3.0
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"author": "Joshua Granick and other contributors",
|
|
5
|
+
"license": "MIT",
|
|
4
6
|
"repository": {
|
|
5
7
|
"type": "git",
|
|
6
8
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,11 +38,11 @@
|
|
|
36
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
39
|
},
|
|
38
40
|
"dependencies": {
|
|
39
|
-
"@flighthq/adjustments": "0.3.0
|
|
40
|
-
"@flighthq/scene2d-canvas": "0.3.0
|
|
41
|
-
"@flighthq/effects": "0.3.0
|
|
42
|
-
"@flighthq/geometry": "0.3.0
|
|
43
|
-
"@flighthq/types": "0.3.0
|
|
41
|
+
"@flighthq/adjustments": "0.3.0",
|
|
42
|
+
"@flighthq/scene2d-canvas": "0.3.0",
|
|
43
|
+
"@flighthq/effects": "0.3.0",
|
|
44
|
+
"@flighthq/geometry": "0.3.0",
|
|
45
|
+
"@flighthq/types": "0.3.0"
|
|
44
46
|
},
|
|
45
47
|
"devDependencies": {
|
|
46
48
|
"typescript": "^5.3.0"
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { createCanvasRenderState, createCanvasRenderTarget } from '@flighthq/scene2d-canvas/contract';
|
|
2
|
+
import type { BevelEffect, CanvasRenderTarget, CanvasRenderTargetPool } from '@flighthq/types/contract';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
applyBevelEffectToCanvas,
|
|
6
|
+
clipCanvasBevelBand,
|
|
7
|
+
defaultCanvasBevelEffectRunner,
|
|
8
|
+
registerCanvasBevelEffect,
|
|
9
|
+
} from './canvasBevelEffect';
|
|
10
|
+
import { getCanvasRenderEffectRunner } from './canvasRenderEffectRegistry';
|
|
11
|
+
|
|
12
|
+
// Recipe assertions rather than pixels — see canvasBlendEffect.test.ts. Scratch targets are pre-seeded so
|
|
13
|
+
// every pass is identifiable; the pool pops from the end, so the seed order reverses the acquire order.
|
|
14
|
+
function seededPool(ids: readonly string[]): { pool: CanvasRenderTargetPool; targets: CanvasRenderTarget[] } {
|
|
15
|
+
const targets = ids.map((id) => {
|
|
16
|
+
const target = createCanvasRenderTarget(4, 4);
|
|
17
|
+
target.canvas.id = id;
|
|
18
|
+
return target;
|
|
19
|
+
});
|
|
20
|
+
return { pool: { free: [...targets].reverse(), inUse: [] }, targets };
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const SCRATCH = ['blurred', 'lit', 'shade', 'side', 'tinted', 'band'];
|
|
24
|
+
|
|
25
|
+
interface Draw {
|
|
26
|
+
entry: string;
|
|
27
|
+
dx: number;
|
|
28
|
+
dy: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function recordAll(log: Draw[], targets: readonly Readonly<CanvasRenderTarget>[]): void {
|
|
32
|
+
for (const target of targets) {
|
|
33
|
+
const context = target.context;
|
|
34
|
+
const into = target.canvas.id;
|
|
35
|
+
vi.spyOn(context, 'drawImage').mockImplementation(((image: CanvasImageSource, dx?: number, dy?: number) => {
|
|
36
|
+
const from = (image as HTMLCanvasElement).id || 'canvas';
|
|
37
|
+
log.push({ entry: `${from}->${into}|${context.globalCompositeOperation}`, dx: dx ?? 0, dy: dy ?? 0 });
|
|
38
|
+
}) as typeof context.drawImage);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function scene(): { source: CanvasRenderTarget; dest: CanvasRenderTarget } {
|
|
43
|
+
const source = createCanvasRenderTarget(4, 4);
|
|
44
|
+
const dest = createCanvasRenderTarget(4, 4);
|
|
45
|
+
source.canvas.id = 'source';
|
|
46
|
+
dest.canvas.id = 'dest';
|
|
47
|
+
return { source, dest };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function bevel(over: Partial<BevelEffect> = {}): BevelEffect {
|
|
51
|
+
return { kind: 'BevelEffect', ...over } as BevelEffect;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
vi.restoreAllMocks();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('applyBevelEffectToCanvas', () => {
|
|
59
|
+
it('offsets one copy toward the light and the other away by the same distance', () => {
|
|
60
|
+
// Angle 0 so the offsets are exactly ∓distance on x. The two copies must be equal and OPPOSITE: a
|
|
61
|
+
// bevel lit from one side is the difference between them, so shifting both the same way yields
|
|
62
|
+
// nothing at all.
|
|
63
|
+
const { source, dest } = scene();
|
|
64
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
65
|
+
const log: Draw[] = [];
|
|
66
|
+
recordAll(log, [...targets, dest]);
|
|
67
|
+
|
|
68
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel({ angle: 0, distance: 6 }));
|
|
69
|
+
|
|
70
|
+
const toLit = log.find((d) => d.entry === 'blurred->lit|source-over');
|
|
71
|
+
const toShade = log.find((d) => d.entry === 'blurred->shade|source-over');
|
|
72
|
+
// toBeCloseTo rather than toEqual: negating a zero component yields -0, which differs from +0 only
|
|
73
|
+
// under Object.is and is identical in every draw that follows.
|
|
74
|
+
expect(toLit?.dx).toBeCloseTo(-6);
|
|
75
|
+
expect(toLit?.dy).toBeCloseTo(0);
|
|
76
|
+
expect(toShade?.dx).toBeCloseTo(6);
|
|
77
|
+
expect(toShade?.dy).toBeCloseTo(0);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('knocks each offset copy out of the other before tinting', () => {
|
|
81
|
+
// The knockout is what turns two silhouettes into an edge band. Tinting first would fill the whole
|
|
82
|
+
// offset silhouette, and the "bevel" would cover the shape rather than its rim.
|
|
83
|
+
const { source, dest } = scene();
|
|
84
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
85
|
+
const log: Draw[] = [];
|
|
86
|
+
recordAll(log, [...targets, dest]);
|
|
87
|
+
|
|
88
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel());
|
|
89
|
+
|
|
90
|
+
const entries = log.map((d) => d.entry);
|
|
91
|
+
expect(entries).toContain('shade->side|destination-out');
|
|
92
|
+
expect(entries).toContain('lit->side|destination-out');
|
|
93
|
+
// Both sides are built in `side`, so neither offset copy is overwritten while the other still needs it.
|
|
94
|
+
expect(entries.filter((e) => e === 'lit->lit|source-over' || e === 'shade->shade|source-over')).toEqual([]);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('builds the highlight side before the shadow side', () => {
|
|
98
|
+
const { source, dest } = scene();
|
|
99
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
100
|
+
const log: Draw[] = [];
|
|
101
|
+
recordAll(log, [...targets, dest]);
|
|
102
|
+
|
|
103
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel());
|
|
104
|
+
|
|
105
|
+
const entries = log.map((d) => d.entry);
|
|
106
|
+
expect(entries.indexOf('shade->side|destination-out')).toBeLessThan(entries.indexOf('lit->side|destination-out'));
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('converts the angle from degrees', () => {
|
|
110
|
+
const { source, dest } = scene();
|
|
111
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
112
|
+
const log: Draw[] = [];
|
|
113
|
+
recordAll(log, [...targets, dest]);
|
|
114
|
+
|
|
115
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel({ angle: 90, distance: 5 }));
|
|
116
|
+
|
|
117
|
+
const toShade = log.find((d) => d.entry === 'blurred->shade|source-over');
|
|
118
|
+
expect(toShade?.dx).toBeCloseTo(0);
|
|
119
|
+
expect(toShade?.dy).toBeCloseTo(5);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('draws the source before the band', () => {
|
|
123
|
+
const { source, dest } = scene();
|
|
124
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
125
|
+
const log: Draw[] = [];
|
|
126
|
+
recordAll(log, [...targets, dest]);
|
|
127
|
+
|
|
128
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel());
|
|
129
|
+
|
|
130
|
+
const toDest = log.filter((d) => d.entry.endsWith('->dest|source-over')).map((d) => d.entry);
|
|
131
|
+
expect(toDest).toEqual(['source->dest|source-over', 'band->dest|source-over']);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('drops the source when sourceMode is hide', () => {
|
|
135
|
+
const { source, dest } = scene();
|
|
136
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
137
|
+
const log: Draw[] = [];
|
|
138
|
+
recordAll(log, [...targets, dest]);
|
|
139
|
+
|
|
140
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel({ sourceMode: 'hide' }));
|
|
141
|
+
|
|
142
|
+
expect(log.filter((d) => d.entry.endsWith('->dest|source-over')).map((d) => d.entry)).toEqual([
|
|
143
|
+
'band->dest|source-over',
|
|
144
|
+
]);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('returns every scratch target to the pool', () => {
|
|
148
|
+
const { source, dest } = scene();
|
|
149
|
+
const { pool } = seededPool(SCRATCH);
|
|
150
|
+
|
|
151
|
+
applyBevelEffectToCanvas(source, dest, pool, bevel());
|
|
152
|
+
|
|
153
|
+
expect(pool.inUse).toHaveLength(0);
|
|
154
|
+
expect(pool.free).toHaveLength(SCRATCH.length);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('runs without a caller-supplied pool', () => {
|
|
158
|
+
const { source, dest } = scene();
|
|
159
|
+
|
|
160
|
+
expect(() => applyBevelEffectToCanvas(source, dest, bevel())).not.toThrow();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
describe('clipCanvasBevelBand', () => {
|
|
165
|
+
function clipOperation(bevelType: BevelEffect['bevelType']): string[] {
|
|
166
|
+
const band = createCanvasRenderTarget(4, 4);
|
|
167
|
+
const source = createCanvasRenderTarget(4, 4);
|
|
168
|
+
band.canvas.id = 'band';
|
|
169
|
+
source.canvas.id = 'source';
|
|
170
|
+
const log: Draw[] = [];
|
|
171
|
+
recordAll(log, [band]);
|
|
172
|
+
clipCanvasBevelBand(band, source, bevelType);
|
|
173
|
+
vi.restoreAllMocks();
|
|
174
|
+
return log.map((d) => d.entry);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
it('keeps the band inside the shape for inner, which is also the default', () => {
|
|
178
|
+
expect(clipOperation('inner')).toEqual(['source->band|destination-in']);
|
|
179
|
+
expect(clipOperation(undefined)).toEqual(['source->band|destination-in']);
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
it('keeps the band outside the shape for outer', () => {
|
|
183
|
+
expect(clipOperation('outer')).toEqual(['source->band|destination-out']);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it('clips nothing for full', () => {
|
|
187
|
+
expect(clipOperation('full')).toEqual([]);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
describe('defaultCanvasBevelEffectRunner', () => {
|
|
192
|
+
it('applies the bevel through the pipeline context', () => {
|
|
193
|
+
const state = createCanvasRenderState(document.createElement('canvas'));
|
|
194
|
+
const { source, dest } = scene();
|
|
195
|
+
const { pool, targets } = seededPool(SCRATCH);
|
|
196
|
+
const log: Draw[] = [];
|
|
197
|
+
recordAll(log, [...targets, dest]);
|
|
198
|
+
|
|
199
|
+
defaultCanvasBevelEffectRunner({ state, source, dest, pool }, bevel());
|
|
200
|
+
|
|
201
|
+
expect(log.map((d) => d.entry)).toContain('band->dest|source-over');
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
describe('registerCanvasBevelEffect', () => {
|
|
206
|
+
it('registers the default runner under the BevelEffect kind', () => {
|
|
207
|
+
const state = createCanvasRenderState(document.createElement('canvas'));
|
|
208
|
+
registerCanvasBevelEffect(state);
|
|
209
|
+
|
|
210
|
+
expect(getCanvasRenderEffectRunner(state, 'BevelEffect')).toBe(defaultCanvasBevelEffectRunner);
|
|
211
|
+
});
|
|
212
|
+
});
|