diff options
Diffstat (limited to 'apps/web/src/services/renderer/nodes/visual-node.ts')
| -rw-r--r-- | apps/web/src/services/renderer/nodes/visual-node.ts | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/web/src/services/renderer/nodes/visual-node.ts b/apps/web/src/services/renderer/nodes/visual-node.ts index 9c6c88ca..7179369e 100644 --- a/apps/web/src/services/renderer/nodes/visual-node.ts +++ b/apps/web/src/services/renderer/nodes/visual-node.ts @@ -1,5 +1,6 @@ import type { CanvasRenderer } from "../canvas-renderer"; import { BaseNode } from "./base-node"; +import type { BlendMode } from "@/types/rendering"; import type { Transform } from "@/types/timeline"; const VISUAL_EPSILON = 1 / 1000; @@ -11,6 +12,7 @@ export interface VisualNodeParams { trimEnd: number; transform: Transform; opacity: number; + blendMode?: BlendMode; } export abstract class VisualNode< @@ -51,6 +53,11 @@ export abstract class VisualNode< const x = renderer.width / 2 + transform.position.x - scaledWidth / 2; const y = renderer.height / 2 + transform.position.y - scaledHeight / 2; + renderer.context.globalCompositeOperation = ( + this.params.blendMode && this.params.blendMode !== "normal" + ? this.params.blendMode + : "source-over" + ) as GlobalCompositeOperation; renderer.context.globalAlpha = opacity; if (transform.rotate !== 0) { |
