home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
vis-ftp.cs.umass.edu
/
vis-ftp.cs.umass.edu.tar
/
vis-ftp.cs.umass.edu
/
pub
/
Software
/
ASCENDER
/
ascendMar8.tar
/
UMass
/
ISR
/
isr2pixelmap.lisp
< prev
next >
Wrap
Lisp/Scheme
|
1995-04-11
|
2KB
|
57 lines
;;; -*- Mode:Common-Lisp; Package:ISR2; Base:10 -*-
;;;
;;; isr2pixelmap.lisp
;;; author: Robert Heller
;;; Created: Tue Jun 21 14:31:52 1988
;;; Copyright 1988 by University of Massachusetts
;;;
;;;
(in-package "ISR2")
(export '(pixelmap-if-needed pixelmap-if-setting pixelmap-if-getting
define-pixelmap-feature))
(defun pixelmap-if-needed (featurename frame token)
(declare (ignore featurename frame))
(let ((extents (isr2:value `(,token extents) :if-undefined nil))
(bitplane (isr2:value `(,token bitplane) :if-undefined nil)))
(unless (and extents bitplane)
(error "Pixelmap is undefined, as are extents and/or bitplane"))
(make-pixelmap :extents extents
:bitplane bitplane)))
(defun pixelmap-if-setting (oldval newval featurename frame token)
(declare (ignore oldval featurename)
(special *store-if-needed*))
(setf *store-if-needed* nil)
(cond ((typep newval 'isr2::pixelmap)
(setf (value (list (or token frame) "EXTENTS"))
(pixelmap-extents newval)
(value (list (or token frame) "BITPLANE"))
(pixelmap-bitplane newval)))
((eq newval :uncalculated) t)
((eq newval :undefined) t)
((eq newval :dummy))
(t (error "Attempt to set pixelmap to something other than a pixelmap: ~S"
newval)))
newval)
(defun pixelmap-if-getting (value featurename frame token)
(declare (ignore value featurename))
(make-pixelmap
:extents (value (list (or token frame) "EXTENTS"))
:bitplane (value (list (or token frame) "BITPLANE"))
)
)
(defmacro define-pixelmap-feature (feature-path docstring)
"DEFINE-PIXELMAP-FEATURE feature-path docstring - define the composite feature
PIXELMAP. It is a composite feature of the EXTENTS and BITPLANE features."
`(define-feature ,feature-path ,docstring :pointer
:if-needed (list 'pixelmap-if-needed)
:if-getting (list 'pixelmap-if-getting)
:if-setting (list 'pixelmap-if-setting)))