(FILECREATED "26-Jul-85 13:42:17" {DSK}<LISPFILES>UTILITIES>THERMOMETER.;5 5205
changes to: (FNS CREATE-THERMOMETER UPDATE-THERMOMETER)
(VARS THERMOMETERCOMS THERMOMETER-TEXTURE-BITMAP)
previous date: "24-Jul-85 17:04:43" {DSK}<LISPFILES>UTILITIES>THERMOMETER.;3)
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT THERMOMETERCOMS)
(RPAQQ THERMOMETERCOMS [(FNS CREATE-THERMOMETER RESET-THERMOMETER UPDATE-THERMOMETER)
(BITMAPS THERMOMETER-TEXTURE-BITMAP)
(P (SETQ THERMOMETER-TEXTURE (CREATETEXTUREFROMBITMAP
THERMOMETER-TEXTURE-BITMAP])
(DEFINEQ
(CREATE-THERMOMETER
[LAMBDA (MAX MIN? REGION-OR-POSITION TITLE) (* sm "26-Jul-85 13:41")
(PROG (THERMOMETER-LENGTH FILING-POSITION WINDOW N-DEVISIONS X-OFFSET)
(SETQ MIN? (OR MIN? 0))
(SETQ MAX (FIX MAX))
(if (GREATERP MIN? MAX)
then (swap MIN? MAX))
(SETQ X-OFFSET (IPLUS 5 (STRINGWIDTH (MKSTRING MAX)
BOLDFONT)))
[if (REGIONP REGION-OR-POSITION)
then (SETQ THERMOMETER-LENGTH (IDIFFERENCE (fetch HEIGHT of REGION-OR-POSITION)
40))
else (SETQ THERMOMETER-LENGTH (MAX 200 (MIN 700 MAX]
(SETQ WINDOW-REGION (if (REGIONP REGION-OR-POSITION)
then REGION-OR-POSITION
elseif (POSITIONP REGION-OR-POSITION)
then (CREATEREGION (fetch XCOORD of REGION-OR-POSITION)
(fetch YCOORD of REGION-OR-POSITION)
(MAX (IPLUS X-OFFSET X-OFFSET 22)
100)
(IPLUS THERMOMETER-LENGTH 40))
else (GETBOXREGION (MAX (IPLUS X-OFFSET X-OFFSET 22)
100)
(IPLUS THERMOMETER-LENGTH 40)
NIL NIL NIL "MARK LOCATION OF THERMOMETER WINDOW.")
))
(SETQ WINDOW (CREATEW WINDOW-REGION (OR TITLE "THERMOMETER")))
(DSPFONT BOLDFONT WINDOW)
(SETQ FILING-POSITION (create POSITION
XCOORD ←(IDIFFERENCE (IQUOTIENT (fetch WIDTH of WINDOW-REGION)
2)
10)
YCOORD ← 10))
(SETQ N-DEVISIONS (MIN (IQUOTIENT THERMOMETER-LENGTH 15)
(if (LESSP (IDIFFERENCE MAX MIN?)
10)
then (IDIFFERENCE MAX MIN?)
else 10)))
(MOVETO (SUB1 (fetch XCOORD of FILING-POSITION))
(SUB1 (fetch YCOORD of FILING-POSITION))
WINDOW)
(RELDRAWTO 22 0 NIL NIL WINDOW)
(RELDRAWTO 0 (IPLUS THERMOMETER-LENGTH 2)
NIL NIL WINDOW)
(RELDRAWTO -22 0 NIL NIL WINDOW)
(RELDRAWTO 0 (MINUS (IPLUS THERMOMETER-LENGTH 2))
NIL NIL WINDOW)
(WINDOWPROP WINDOW (QUOTE TH.LENGTH)
THERMOMETER-LENGTH)
(WINDOWPROP WINDOW (QUOTE TH.MAX)
MAX)
(WINDOWPROP WINDOW (QUOTE TH.MIN)
MIN?)
(WINDOWPROP WINDOW (QUOTE TH.POSITION)
FILING-POSITION)
(for X from MIN? to MAX by (IQUOTIENT (IDIFFERENCE MAX MIN?)
N-DEVISIONS)
do (MOVETO (IDIFFERENCE (fetch XCOORD of FILING-POSITION)
(IPLUS 5 (STRINGWIDTH (MKSTRING X)
BOLDFONT)))
(IPLUS 10 (FIX (FTIMES (FQUOTIENT (IDIFFERENCE X MIN?)
(IDIFFERENCE MAX MIN?))
THERMOMETER-LENGTH)))
WINDOW)
(PRIN1 X WINDOW))
(RESET-THERMOMETER WINDOW)
(RETURN WINDOW])
(RESET-THERMOMETER
[LAMBDA (TH-WINDOW) (* sm "24-Jul-85 12:33")
(DSPFILL (CREATEREGION (fetch XCOORD of (WINDOWPROP TH-WINDOW (QUOTE TH.POSITION)))
(fetch YCOORD of (WINDOWPROP TH-WINDOW (QUOTE TH.POSITION)))
20
(WINDOWPROP TH-WINDOW (QUOTE TH.LENGTH)))
WHITESHADE
(QUOTE REPLACE)
TH-WINDOW])
(UPDATE-THERMOMETER
[LAMBDA (VALUE TH-WINDOW SHADE) (* sm "25-Jul-85 11:13")
(AND TH-WINDOW (WINDOWP TH-WINDOW)
(SETQ SHADE (OR SHADE THERMOMETER-TEXTURE))
(DSPFILL [CREATEREGION (fetch XCOORD of (WINDOWPROP TH-WINDOW (QUOTE TH.POSITION)))
(fetch YCOORD of (WINDOWPROP TH-WINDOW (QUOTE TH.POSITION)))
20
(FIX (FTIMES [FQUOTIENT (IDIFFERENCE VALUE (WINDOWPROP TH-WINDOW
(QUOTE TH.MIN))
)
(IDIFFERENCE (WINDOWPROP TH-WINDOW
(QUOTE TH.MAX))
(WINDOWPROP TH-WINDOW
(QUOTE TH.MIN]
(WINDOWPROP TH-WINDOW (QUOTE TH.LENGTH]
SHADE
(QUOTE REPLACE)
TH-WINDOW])
)
(RPAQ THERMOMETER-TEXTURE-BITMAP (READBITMAP))
(4 4
"K@@@"
"K@@@"
"K@@@"
"K@@@")
(SETQ THERMOMETER-TEXTURE (CREATETEXTUREFROMBITMAP THERMOMETER-TEXTURE-BITMAP))
(PUTPROPS THERMOMETER COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (628 4961 (CREATE-THERMOMETER 638 . 3711) (RESET-THERMOMETER 3713 . 4146) (
UPDATE-THERMOMETER 4148 . 4959)))))
STOP