All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m33s
Merges full history from art-dag/mono.git into the monorepo under the artdag/ directory. Contains: core (DAG engine), l1 (Celery rendering server), l2 (ActivityPub registry), common (shared templates/middleware), client (CLI), test (e2e). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> git-subtree-dir: artdag git-subtree-mainline:1a179de547git-subtree-split:4c2e716558
32 lines
1.0 KiB
Common Lisp
32 lines
1.0 KiB
Common Lisp
;; Blend effect - combines two video frames
|
|
;; Streaming-compatible: frame is background, overlay is second frame
|
|
;; Usage: (blend background overlay :opacity 0.5 :mode "alpha")
|
|
;;
|
|
;; Params:
|
|
;; mode - blend mode (add, multiply, screen, overlay, difference, lighten, darken, alpha)
|
|
;; opacity - blend amount (0-1)
|
|
|
|
(require-primitives "image" "blending" "core")
|
|
|
|
(define-effect blend
|
|
:params (
|
|
(overlay :type frame :default nil)
|
|
(mode :type string :default "alpha")
|
|
(opacity :type float :default 0.5)
|
|
)
|
|
(if (core:is-nil overlay)
|
|
frame
|
|
(let [a frame
|
|
b overlay
|
|
a-h (image:height a)
|
|
a-w (image:width a)
|
|
b-h (image:height b)
|
|
b-w (image:width b)
|
|
;; Resize b to match a if needed
|
|
b-sized (if (and (= a-w b-w) (= a-h b-h))
|
|
b
|
|
(image:resize b a-w a-h "linear"))]
|
|
(if (= mode "alpha")
|
|
(blending:blend-images a b-sized opacity)
|
|
(blending:blend-images a (blending:blend-mode a b-sized mode) opacity)))))
|