Add S-expression based video effects pipeline with modular effect definitions, constructs, and recipe files. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
28 lines
937 B
Common Lisp
28 lines
937 B
Common Lisp
;; Tile Grid effect - tiles image in grid
|
|
;; @param rows int [1, 10] default 2
|
|
;; @param cols int [1, 10] default 2
|
|
;; @param gap int [0, 50] default 0
|
|
|
|
(define-effect tile_grid
|
|
((rows 2) (cols 2) (gap 0))
|
|
(let* ((w (width frame))
|
|
(h (height frame))
|
|
(tile-w (floor (/ (- w (* gap (- cols 1))) cols)))
|
|
(tile-h (floor (/ (- h (* gap (- rows 1))) rows)))
|
|
(tile (resize frame tile-w tile-h "area"))
|
|
(result (make-image w h (list 0 0 0))))
|
|
(begin
|
|
;; Manually place tiles using nested iteration
|
|
;; This is a simplified version - full version would loop
|
|
(paste result tile 0 0)
|
|
(if (> cols 1)
|
|
(paste result tile (+ tile-w gap) 0)
|
|
nil)
|
|
(if (> rows 1)
|
|
(paste result tile 0 (+ tile-h gap))
|
|
nil)
|
|
(if (and (> cols 1) (> rows 1))
|
|
(paste result tile (+ tile-w gap) (+ tile-h gap))
|
|
nil)
|
|
result)))
|