;; ASCII Art effect - converts image to ASCII characters
(require-primitives "ascii")

(define-effect ascii_art
  :params (
    (char_size :type int :default 8 :range [4 32])
    (alphabet :type string :default "standard")
    (color_mode :type string :default "color" :desc ""color", "mono", "invert", or any color name/hex")
    (background_color :type string :default "black" :desc "background color name/hex")
    (invert_colors :type int :default 0 :desc "swap foreground and background colors")
    (contrast :type float :default 1.5 :range [1 3])
  )
  (let* ((sample (cell-sample frame char_size))
         (colors (nth sample 0))
         (luminances (nth sample 1))
         (chars (luminance-to-chars luminances alphabet contrast)))
    (render-char-grid frame chars colors char_size color_mode background_color invert_colors)))
