- Remove legacy_tasks.py, hybrid_state.py, render.py - Remove old task modules (analyze, execute, execute_sexp, orchestrate) - Add streaming interpreter from test repo - Add sexp_effects with primitives and video effects - Add streaming Celery task with CID-based asset resolution - Support both CID and friendly name references for assets - Add .dockerignore to prevent local clones from conflicting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
30 lines
1008 B
Common Lisp
30 lines
1008 B
Common Lisp
;; Tile Grid effect - tiles image in grid
|
|
(require-primitives "geometry" "image")
|
|
|
|
(define-effect tile_grid
|
|
:params (
|
|
(rows :type int :default 2 :range [1 10])
|
|
(cols :type int :default 2 :range [1 10])
|
|
(gap :type int :default 0 :range [0 50])
|
|
)
|
|
(let* ((w (image:width frame))
|
|
(h (image:height frame))
|
|
(tile-w (floor (/ (- w (* gap (- cols 1))) cols)))
|
|
(tile-h (floor (/ (- h (* gap (- rows 1))) rows)))
|
|
(tile (image: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)))
|