(in-package :clim-user) (define-application-frame foo-app () () (:panes (foo (make-pane 'application-pane))) (:layouts (default foo)) (:geometry :width 300 :height 300)) (defvar *frame*) (defun doit (&optional (f 60)) (let ((stream (find-pane-named *frame* 'foo))) (window-clear stream) (let ((d 30)) (loop for x below 300 by d for i from 0 do (loop for y below 300 by d for j from 0 do (draw-rectangle* stream x y (+ x d) (+ y d) :ink (if (oddp (+ i j)) +yellow-4+ +green-4+))))) (let ((record (with-new-output-record (stream) (draw-circle* stream 5 5 20) (draw-circle* stream 0 0 20 :ink +gray-66+)))) (loop for i below 2 do (draw-text* stream "CLIM still rocks!" (+ 20 (* -8 i)) (+ 20 (* -8 i)) :ink (if (zerop i) +black+ +white+) :align-y :top :text-size :huge :text-face :bold :text-family :sans-serif)) (loop (setf (output-record-position record) (let ((now (/ (get-internal-real-time) internal-time-units-per-second))) (values 150 (+ 150 (* 150 (sin (* 1 now))))))) (sleep (/ f))))))