Function: zone-pgm-drip
zone-pgm-drip is a byte-compiled function defined in zone.el.gz.
Signature
(zone-pgm-drip &optional FRET-P PANCAKE-P)
Source Code
;; Defined in /usr/src/emacs/lisp/play/zone.el.gz
(defun zone-pgm-drip (&optional fret-p pancake-p)
(let* ((ww (1- (window-width)))
(wh (window-height))
(mc 0) ; miss count
(total (* ww wh))
(fall-p nil)
wbeg wend c)
(zone-fill-out-screen ww wh)
(setq wbeg (window-start)
wend (window-end))
(catch 'done
(while (not (input-pending-p))
(setq mc 0 wend (window-end))
;; select non-ws character, but don't miss too much
(goto-char (+ wbeg (random (- wend wbeg))))
(while (looking-at "[ \n\f]")
(if (= total (setq mc (1+ mc)))
(throw 'done 'sel)
(goto-char (+ wbeg (random (- wend wbeg))))))
;; character animation sequence
(let ((p (point)))
(when fret-p (zone-fret wbeg p))
(goto-char p)
(setq c (zone-cpos p)
fall-p (zone-fall-through-ws c wbeg wend)))
;; assuming current-column has not changed...
(when (and pancake-p
fall-p
(< (count-lines (point-min) (point))
wh))
(let ((cw (ceiling (char-width (aref c 0)))))
(zone-replace-char cw 1 c ?@) (zone-park/sit-for wbeg 0.137)
(zone-replace-char cw nil c ?*) (zone-park/sit-for wbeg 0.137)
(zone-replace-char cw nil c ?_)))))))