2007/12/21

再 CLIM(McCLIM) で Hello World! まで

McCLIM の Wiki(McCliki)にある "A Guided Tour of the Common Lisp Interface Manager" を読んでいます。それにのっていた Hello World ですが、"Hello World!" を真ん中に表示するための次のコードがとても気に入りました。
(floor w 2) (floor h 2) :align-x :center :align-y :center
今日はただそれだけです。

(eval-when (:compile-toplevel :load-toplevel :execute)
  (require :mcclim))

(in-package :clim-user)

(define-application-frame hello-world ()
  ((greeting :initform "Hello World!"
  :accessor greeting))
  (:pane (make-pane 'hello-world-pane)))

(defclass hello-world-pane (clim-stream-pane)
  ())

(defmethod handle-repaint ((pane hello-world-pane) region)
  (let ((w (bounding-rectangle-width pane))
  (h (bounding-rectangle-height pane)))
  (draw-rectangle* pane 0 0 w h
  :filled t
  :ink (pane-background pane))
  (draw-text* pane
  (greeting *application-frame*)
  (floor w 2) (floor h 2) :align-x :center :align-y :center)))

(defun run ()
  (run-frame-top-level
  (make-application-frame 'hello-world :width 300 :height 200)))

;;(run)

0 件のコメント: