home *** CD-ROM | disk | FTP | other *** search
- (in-package :oou)
- (oou-provide :frame-svm)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; frame-svm.Lisp
- ;;
- ;; Copyright ⌐ 1992 Northwestern University Institute for the Learning Sciences
- ;; All Rights Reserved
- ;;
- ;; author: Michael S. Engber
- ;;
- ;; Simple view mixin for 3D framing the view.
- ;; Note: this effect only looks right over grayish backgrounds.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (oou-dependencies
- :simple-view-ce
- :QuickDraw-u)
-
-
- (export '(frame-svm draw-frame))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (defclass frame-svm ()
- ((frame-width :initarg :frame-width
- :accessor frame-width)
- (color-list :initarg :part-color-list))
- (:default-initargs
- :part-color-list nil
- :frame-width 1))
-
- (defmethod (setf frame-width) :after (new-width (sv frame-svm))
- (declare (ignore new-width))
- (invalidate-view sv t))
-
- (defmethod view-draw-contents :after ((sv frame-svm))
- (multiple-value-bind (topLeft botRight) (focused-corners sv)
- (rlet ((r :Rect
- :topLeft topLeft
- :bottomRight botRight))
- (with-fore-color (getf (part-color-list sv) :frame *black-color*)
- (with-pen-state (:pnSize (make-point (frame-width sv) (frame-width sv)))
- (draw-frame sv r))))))
-
- (defmethod draw-frame ((sv frame-svm) rect)
- (with-pen-state (:pnSize (make-point (frame-width sv) (frame-width sv)))
- (#_FrameRect rect)))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- #|
-
- ;;; a modest example - adding a frame to static text dialog items
-
- (defclass sttxt (static-text-dialog-item frame-svm) ())
-
- (progn
- (setf *test-w*
- (make-instance 'dialog
- :window-type :document
- :view-position :centered
- :view-size #@(200 100)
- :window-title "3D frame demo"
- ))
-
- (add-subviews *test-w* (make-dialog-item 'sttxt
- #@(20 20)
- #@(163 18)
- "I'm static text + a mixin"
- #'(lambda (item) (declare (ignore item)) (ed-beep))
-
- :view-nick-name :butt
- )))
-
- ;(setf (frame-width (view-named :butt *test-w*)) 4)
-
- |#