(FILECREATED "30-Nov-84 10:00:40" {AZTEC}<TRILLIUM>BIRTHDAY84>ITEMTYPES>IDO-BUTTON-ITEMTYPES.;2 52598  

      changes to:  (VARS IDO-BUTTON-ITEMTYPESCOMS)

      previous date: "26-Aug-84 19:53:26" {AZTEC}<TRILLIUM>BIRTHDAY84>IDO-BUTTON-ITEMTYPES.;1)


(PRETTYCOMPRINT IDO-BUTTON-ITEMTYPESCOMS)

(RPAQQ IDO-BUTTON-ITEMTYPESCOMS [(ITEMTYPES DECIMAL.BUTTON.NEXT.DIGIT DECIMAL.NUMBER.PAD 
					    GRAPHIC.BUTTON GRAPHIC.CHANGE.FRAME.BUTTON 
					    GRAPHIC.ON/OFF.BUTTON ICONIC.CASCADE 
					    INVERTING.ICONIC.CASCADE LABELLED.BUTTON 
					    LABELLED.ICONIC.CASCADE SET.OF.GRAPHIC.ON/OFF.BUTTONS 
					    SEVEN.SEGMENT.NUMBER.PAD THERMOMETER XEROX.NUMBER.BUTTON 
					    XEROX.NUMBER.BUTTON.NEXT.DIGIT XEROX.NUMBER.PAD)
	(INITVARS (COMB.TEXT.DSP))
	(P (COMPILE.INTERNAL.FNS.IF.NECESSARY))
	(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
									      (NLAML 
									    NEXT.DIGIT.CELL.XEROX)
									      (LAMA])
(READ.ITEMTYPE DECIMAL.BUTTON.NEXT.DIGIT 5)
(\TYPE ITEM.TYPE NAME DECIMAL.BUTTON.NEXT.DIGIT COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the label")  (\TYPE PARAMETER NAME TEXT.CELL TYPE
  (CELL) DEFAULT TEXT.1 COMMENT  "The cell holding the string value")  (\TYPE PARAMETER NAME 
NUMBER.CELL TYPE  (CELL) DEFAULT NUMBER.1 COMMENT  "The cell holding the actual numeric value")  (
\TYPE PARAMETER NAME PLACES.CELL TYPE  (CELL) DEFAULT PLACES.1 COMMENT  
"The cell holding the current number of places after the decimal point")  (\TYPE PARAMETER NAME DIGIT 
TYPE  (INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME
 PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) 
SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS
 BUTTON.BITMAP.EXTRA) 0)))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON
))  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  (QUOTE NEXT.DECIMAL.DIGIT.CELL) NUMBER.CELL  (
KWOTE DIGIT) TEXT.CELL PLACES.CELL)))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE DECIMAL.NUMBER.PAD 5)
(\TYPE ITEM.TYPE NAME DECIMAL.NUMBER.PAD COMMENT  "A number pad for constructing decimal numbers" KIND
 COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT 
 "The lower left corner of the number pad" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME TEXT.CELL 
TYPE  (CELL) DEFAULT TEXT.1 COMMENT  
"The cell that holds the string value for the number (to be displayed in the value bar)")  (\TYPE 
PARAMETER NAME NUMBER.CELL TYPE  (CELL) DEFAULT NUMBER.1 COMMENT  
"The cell that holds the actual numeric value")  (\TYPE PARAMETER NAME PLACES.CELL TYPE  (CELL) 
DEFAULT PLACES.1 COMMENT  "A cell for keeping a count of thew number of places past the decimal point"
)  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The value to start with on frame initialization")  (\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) 
DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the buttons in the number pad")  (\TYPE 
PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button labels")  (\TYPE 
PARAMETER NAME DECIMAL.FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the decimal point button")
  (\TYPE PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The thickness in screen points of the border (around the value bar)")  (\TYPE PARAMETER NAME 
BORDER.COLOR TYPE  (SHADE) DEFAULT 65535 COMMENT  "The color of the border")  (\TYPE PARAMETER NAME 
PRINT.FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font of the print region")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Alignment of the numbers in the value bar")  (\TYPE PARAMETER NAME PRINT.MARGIN TYPE  (INTEGER) 
DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER NAME PRINT.BACKGROUND TYPE  
(SHADE) DEFAULT 0 COMMENT  "The background of the printing region")  (\TYPE PARAMETER NAME 
PRINT.TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  "The texture with which the print is combined")  (
\TYPE PARAMETER NAME PRINT.SOURCE TYPE  (ONEOF  (INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  
"How the texture is combined with the print")  (\TYPE PARAMETER NAME PRINT.OPERATION TYPE  (ONEOF  (
REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "How the print is combined with the background")
) SUBITEM.SPECS  ((ITEM VALUE.BAR  (PLACEMENT  (NEW.GRIDREGION  (TRANSLATE PLACEMENT 0  (ITIMES 4  (
ADD1  (YGRID  (BITMAP.HEIGHT PICTURE)))))  (SUB1  (ITIMES 3  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))))
 2))  (CELL TEXT.CELL)  (XALIGNMENT HORIZONTAL.ALIGNMENT)  (YALIGNMENT  (QUOTE CENTER))  (FONT 
PRINT.FONT)  (BORDER.THICKNESS BORDER.THICKNESS)  (BORDER.COLOR BORDER.COLOR)  (PRINT.MARGIN 
PRINT.MARGIN)  (PRINT.BACKGROUND PRINT.BACKGROUND)  (PRINT.TEXTURE PRINT.TEXTURE)  (PRINT.SOURCE 
PRINT.SOURCE)  (PRINT.OPERATION PRINT.OPERATION))  (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (
ACTION.FORM  (LIST  (QUOTE SET.CELL) TEXT.CELL  (MKSTRING INITIAL.VALUE))))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) NUMBER.CELL  (KWOTE INITIAL.VALUE))))  (
ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) PLACES.CELL -1)))  (
ITEM DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 1)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 3  (ADD1  (
YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (PLACES.CELL 
PLACES.CELL)  (DIGIT 1)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 2)  
(PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 3  (
ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (
PLACES.CELL PLACES.CELL)  (DIGIT 2)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT 
 (LABEL 3)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (
ITIMES 3  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL
)  (PLACES.CELL PLACES.CELL)  (DIGIT 3)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 4)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 2  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (PLACES.CELL 
PLACES.CELL)  (DIGIT 4)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 5)  
(PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 2  (
ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (
PLACES.CELL PLACES.CELL)  (DIGIT 5)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT 
 (LABEL 6)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (
ITIMES 2  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL
)  (PLACES.CELL PLACES.CELL)  (DIGIT 6)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 7)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 1  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (PLACES.CELL 
PLACES.CELL)  (DIGIT 7)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 8)  
(PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 1  (
ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (
PLACES.CELL PLACES.CELL)  (DIGIT 8)  (PICTURE PICTURE)  (FONT FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT 
 (LABEL 9)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (
ITIMES 1  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (NUMBER.CELL NUMBER.CELL)  (TEXT.CELL TEXT.CELL
)  (PLACES.CELL PLACES.CELL)  (DIGIT 9)  (PICTURE PICTURE)  (FONT FONT))  (ITEM LABELLED.BUTTON  (
LABEL  (QUOTE  "."))  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE FLOAT.DIGIT.CELL) TEXT.CELL 
PLACES.CELL))  (PICTURE PICTURE)  (FONT DECIMAL.FONT))  (ITEM DECIMAL.BUTTON.NEXT.DIGIT  (LABEL 0)  (
PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (NUMBER.CELL
 NUMBER.CELL)  (TEXT.CELL TEXT.CELL)  (PLACES.CELL PLACES.CELL)  (DIGIT 0)  (PICTURE PICTURE)  (FONT 
FONT))  (ITEM LABELLED.BUTTON  (LABEL  (QUOTE  "C"))  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (
ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (ACTION.FORM  (BQUOTE  (PROG NIL  (CHANGE.CELL , 
TEXT.CELL ,  "0")  (CHANGE.CELL , NUMBER.CELL , 0)  (CHANGE.CELL , PLACES.CELL , -1))))  (PICTURE 
PICTURE)  (FONT FONT))) CLASSES  (COMPOSITE BUTTON))
(READ.ITEMTYPE GRAPHIC.BUTTON 5)
(\TYPE ITEM.TYPE NAME GRAPHIC.BUTTON COMMENT  "A general button that changes artwork when depressed" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) 
COMMENT  "The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE 
PARAMETER NAME ON.PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The artwork for the button in the ON state")  (\TYPE PARAMETER NAME OFF.PICTURE TYPE  (BITMAP.NAME) 
DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button in the OFF state")  (\TYPE PARAMETER
 NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  ("Button Label") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR) 
DEFAULT  (17 . 17) COMMENT  "The offset of the words from the lower left corner of the button")  (
\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME ACTION.FORM TYPE  (
FORM) DEFAULT  (ACTION.PRINT  "This action brought to you by a GRAPHIC.BUTTON ") COMMENT  
"The action to take as the result of pressing the button")) SUBITEM.SPECS  ((LABEL ON.BUTTON  (ITEM 
PICTURE  (PLACEMENT PLACEMENT)  (BITMAP OFF.PICTURE)))  (ITEM GRAPHIC.SENSITIVE.REGION  (PLACEMENT 
PLACEMENT)  (ON.PICTURE ON.PICTURE)  (REMOVE.WITH.OFF.PICTURE?  (QUOTE YES))  (OFF.PICTURE OFF.PICTURE
)  (ACTION.FORM ACTION.FORM))  (ITEM BLOCK.OF.TEXT  (PLACEMENT  (PTRANSLATE PLACEMENT TEXT.OFFSET))  (
LIST.OF.LINES TEXT)  (XALIGNMENT HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT)  
(OPERATION  (QUOTE INVERT)))) OTHER  (FNS  ((1 CONVERT.GRAPHIC.BUTTON.OFFSETS))) CLASSES  (COMPOSITE 
BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.GRAPHIC.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE GRAPHIC.CHANGE.FRAME.BUTTON 5)
(\TYPE ITEM.TYPE NAME GRAPHIC.CHANGE.FRAME.BUTTON COMMENT  
"A button that changes frames and has different graphics for its normal and sensed conditions (instead of inverting)"
 KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) 
COMMENT  "The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE 
PARAMETER NAME ON.PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The artwork for the button when it is selected")  (\TYPE PARAMETER NAME OFF.PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The artwork for the button when it is not selected")  (\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING
)) DEFAULT  (Button Label) COMMENT  "The words associated with the button")  (\TYPE PARAMETER NAME 
TEXT.OFFSET TYPE  (OFFSET.VECTOR) DEFAULT  (17 . 17) COMMENT  
"The offset of the words from the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME STACK.OPERATION TYPE  
(ONEOF  (NO.CHANGE PUSH POP)) DEFAULT PUSH COMMENT  "How to change the stack of frames")  (\TYPE 
PARAMETER NAME INITIALIZATION TYPE  (ONEOF  (INITIALIZE DO.NOT.INITIALIZE)) DEFAULT INITIALIZE COMMENT
  "Whether or not to do initialization of the frame")  (\TYPE PARAMETER NAME FRAME TYPE  (FRAME) 
DEFAULT NIL COMMENT  "The frame to push to")) SUBITEM.SPECS  ((ITEM GRAPHIC.BUTTON  (PLACEMENT 
PLACEMENT)  (ON.PICTURE ON.PICTURE)  (OFF.PICTURE OFF.PICTURE)  (TEXT TEXT)  (TEXT.OFFSET TEXT.OFFSET)
  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT)  (
ACTION.FORM  (LIST  (QUOTE SETQQ)  (QUOTE CHANGE.FRAME.SPECIFICATIONS)  (LIST  (QUOTE OPERATION) 
STACK.OPERATION  (QUOTE FRAME.NAME) FRAME  (QUOTE INITIALIZE)  (EQ INITIALIZATION  (QUOTE INITIALIZE))
))))) OTHER  (FNS  ((1 CONVERT.GRAPHIC.CHANGE.FRAME.BUTTON.OFFSETS))) CLASSES  (COMPOSITE BUTTON) 
VERSION 1)
(DEFINEQ

(CONVERT.GRAPHIC.CHANGE.FRAME.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE GRAPHIC.ON/OFF.BUTTON 5)
(\TYPE ITEM.TYPE NAME GRAPHIC.ON/OFF.BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME ON.PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The artwork for the button in the ON state")  (\TYPE PARAMETER NAME OFF.PICTURE TYPE  (BITMAP.NAME) 
DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button in the OFF state")  (\TYPE PARAMETER
 NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  (Button Label) COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME BITBLT.OPERATION TYPE  (ONEOF  (REPLACE
 PAINT ERASE INVERT)) DEFAULT INVERT COMMENT  
"The OPERATION to use to combine the text with the bitmaps")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  
(OFFSET.VECTOR) DEFAULT  (17 . 17) COMMENT  
"The offset of the words from the lower left corner of the button")  (\TYPE PARAMETER NAME FONT TYPE  
(FONT) DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT
) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((LABEL ON.BUTTON  (
ITEM INDICATOR  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS BUTTON.BITMAP.EXTRA) 0)))  (
BITMAP  (COMBINE.TEXT.WITH.BITMAP ON.PICTURE TEXT FONT BITBLT.OPERATION TEXT.OFFSET 
HORIZONTAL.ALIGNMENT VERTICAL.ALIGNMENT))  (CELL CELL)  (CONDITION.OPERATION  (QUOTE =))  (
REFERENCE.VALUE VALUE)))  (LABEL OFF.BUTTON  (ITEM INDICATOR  (PLACEMENT  (PTRANSLATE PLACEMENT  (
NEW.POSITION  (MINUS BUTTON.BITMAP.EXTRA) 0)))  (BITMAP  (COMBINE.TEXT.WITH.BITMAP OFF.PICTURE TEXT 
FONT BITBLT.OPERATION TEXT.OFFSET HORIZONTAL.ALIGNMENT VERTICAL.ALIGNMENT))  (CELL CELL)  (
CONDITION.OPERATION  (QUOTE NOT.EQUAL))  (REFERENCE.VALUE VALUE)))  (ITEM SENSITIVE.REGION  (PLACEMENT
  (COMPOSITE.BOUNDING.BOX  (LIST ON.BUTTON OFF.BUTTON)))  (ACTION.FORM  (LIST  (QUOTE CHANGE.CELL) 
CELL  (KWOTE VALUE))))) OTHER  (FNS  ((NIL COMBINE.TEXT.WITH.BITMAP)  (NIL COMBINE.LINE.WITH.BITMAP)  
(1 CONVERT.GRAPHIC.ON/OFF.BUTTON.OFFSETS))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(COMBINE.TEXT.WITH.BITMAP
(LAMBDA (BITMAP.NAME TEXT FONT BITBLT.OPERATION T.OFFSET H.ALIGNMENT V.ALIGNMENT) (* edited: 
"26-Aug-84 19:25") (PROG (BITMAP FONT.DESCRIPTOR FONT.HEIGHT FONT.DESCENT WIDTH H.OFFSET V.OFFSET TX 
TY) (SETQ BITMAP (BITMAPCOPY (FIND.BITMAP BITMAP.NAME))) (SETQ FONT.DESCRIPTOR (COND (FONT (FIND.FONT 
FONT)) (T (DSPFONT NIL CURRENT.DSP)))) (SETQ FONT.HEIGHT (FONTPROP FONT.DESCRIPTOR (QUOTE HEIGHT))) (
SETQ FONT.DESCENT (FONTPROP FONT.DESCRIPTOR (QUOTE DESCENT))) (SETQ H.OFFSET (CAR T.OFFSET)) (SETQ 
V.OFFSET (CDR T.OFFSET)) (SETQ TY (SELECTQ V.ALIGNMENT (BOTTOM (IPLUS V.OFFSET (ITIMES FONT.HEIGHT (
SUB1 (LENGTH TEXT))))) (CENTER (IPLUS V.OFFSET (IQUOTIENT (ITIMES FONT.HEIGHT (SUB1 (LENGTH TEXT))) 2)
)) (CENTER (IPLUS V.OFFSET (IQUOTIENT (ITIMES FONT.HEIGHT (SUB1 (LENGTH TEXT))) 2))) (TOP (CDR 
T.OFFSET)) (SHOULDNT))) (for LINE in TEXT do (SETQ WIDTH (STRINGWIDTH LINE FONT)) (SETQ TX (SELECTQ 
H.ALIGNMENT (LEFT H.OFFSET) (CENTER (IDIFFERENCE H.OFFSET (IQUOTIENT WIDTH 2))) (RIGHT (IDIFFERENCE 
H.OFFSET WIDTH)) (SHOULDNT))) (COMBINE.LINE.WITH.BITMAP BITMAP LINE FONT.DESCRIPTOR FONT.HEIGHT WIDTH 
BITBLT.OPERATION TX TY) (SETQ TY (IDIFFERENCE TY FONT.HEIGHT))) (RETURN BITMAP))))

(COMBINE.LINE.WITH.BITMAP
(LAMBDA (BITMAP LINE FONT FONT.HEIGHT STRING.WIDTH BITBLT.OPERATION DX DY) (* edited: 
"26-Aug-84 19:12") (PROG (LINE.BITMAP DS (FONT.DESCENT (FONTPROP FONT (QUOTE DESCENT)))) (DECLARE (
SPECVARS . T)) (SETQ DS (OR COMB.TEXT.DSP (SETQ COMB.TEXT.DSP (DSPCREATE)))) (SETQ LINE.BITMAP (
BITMAPCREATE STRING.WIDTH FONT.HEIGHT)) (DSPDESTINATION LINE.BITMAP DS) (DSPFONT FONT DS) (
DSPXPOSITION 0 DS) (DSPYPOSITION FONT.DESCENT DS) (PRIN1 LINE DS) (BITBLT LINE.BITMAP 0 0 BITMAP DX DY
 STRING.WIDTH FONT.HEIGHT (QUOTE INPUT) BITBLT.OPERATION BLACKSHADE))))

(CONVERT.GRAPHIC.ON/OFF.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE ICONIC.CASCADE 5)
(\TYPE ITEM.TYPE NAME ICONIC.CASCADE COMMENT  
"A button and set of indicators for a cascade configuration, that change continuously when button is held down"
 KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) 
COMMENT  "Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME MAP/VALUES TYPE  (
LIST  (STRUCTURE  ((BITMAPS  (STRUCTURE  ((ON-BITMAP  (BITMAP.NAME))  (OFF-BITMAP  (BITMAP.NAME)))))  
(VALUE  (CONSTANT))))) DEFAULT  (((SIMPLE.BUTTON.BITMAP SMALL.SPOT.BITMAP) VALUE.1)  ((
SIMPLE.BUTTON.BITMAP SMALL.SPOT.BITMAP) VALUE.2)) COMMENT  
"A list of bitmaps and reference values for each of the iconic indicators")  (\TYPE PARAMETER NAME 
BUTTON.PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")
  (\TYPE PARAMETER NAME BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  
"Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME INDICATOR.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (0 . 68) COMMENT  "Spacing between the indicators")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  
"Horizontal alignment of the text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP 
CENTER BOTTOM)) DEFAULT TOP COMMENT  "Vertical alignment of the text")  (\TYPE PARAMETER NAME 
CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT NO COMMENT  "Keep going if button is held down?")  (\TYPE 
PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT  "Delay in milliseconds")  (\TYPE PARAMETER 
NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME 
INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")  (\TYPE 
PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) DEFAULT YES COMMENT  
"Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM CASCADE.BUTTON  (PLACEMENT 
PLACEMENT)  (BUTTONS MAP/VALUES)  (CELL CELL)  (PICTURE BUTTON.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (
RATE RATE)  (AT.LIMIT  (QUOTE WRAP.AROUND))  (DIRECTION  (QUOTE UP)))  (FOREACH  (ICONS IN  (COND  ((
EQ SHOW.INITIAL.VALUE?  (QUOTE YES)) MAP/VALUES)  (T  (for I in MAP/VALUES collect I when  (NOT  (
EQUAL  (CADR I) INITIAL.VALUE))))))  (I FROM 0)  (J FROM 0) DO  (ITEM INDICATOR  (PLACEMENT  (
PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES J  (CAR INDICATOR.SPACING))  (CAR 
BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (CDR BUTTON/INDICATOR.SPACING
)))))  (BITMAP  (CAAR ICONS))  (CELL CELL)  (CONDITION.OPERATION  (QUOTE =))  (REFERENCE.VALUE  (CADR 
ICONS)))  (ITEM INDICATOR  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES J  (CAR 
INDICATOR.SPACING))  (CAR BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (
CDR BUTTON/INDICATOR.SPACING)))))  (BITMAP  (CADAR ICONS))  (CELL CELL)  (CONDITION.OPERATION  (QUOTE 
NOT.EQUAL))  (REFERENCE.VALUE  (CADR ICONS))))  (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (name  
"Iconic.Cascade Init")  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL INITIAL.VALUE)))) OTHER  (FNS  ((1 
CONVERT.ICONIC.CASCADE.OFFSETS))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.ICONIC.CASCADE.OFFSETS
(LAMBDA (ITEM) (* KKM "25-Aug-84 17:10") (CONVERT.GRIDDED.OFFSETSQ ITEM 
BUTTON/INDICATOR.HORIZONTAL.SPACING BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING VERTICAL.SPACING INDICATOR.SPACING)))
)
(READ.ITEMTYPE INVERTING.ICONIC.CASCADE 5)
(\TYPE ITEM.TYPE NAME INVERTING.ICONIC.CASCADE COMMENT  
"A button and set of indicators for a cascade configuration, that change continuously when button is held down"
 KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) 
COMMENT  "Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME MAP/VALUES TYPE  (
LIST  (STRUCTURE  ((BITMAP  (BITMAP.NAME))  (VALUE  (CONSTANT))))) DEFAULT  ((SMALL.SPOT.BITMAP 
VALUE.1)  (SMALL.SPOT.BITMAP VALUE2)) COMMENT  "A list of BITMAP VALUE pairs.")  (\TYPE PARAMETER NAME
 BUTTON.PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button"
)  (\TYPE PARAMETER NAME BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  
"Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME INDICATOR.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (0 . 68) COMMENT  "Spacing between the indicators")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  
"Horizontal alignment of the text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP 
CENTER BOTTOM)) DEFAULT TOP COMMENT  "Vertical alignment of the text")  (\TYPE PARAMETER NAME 
CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT NO COMMENT  "Keep going if button is held down?")  (\TYPE 
PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT  "Delay in milliseconds")  (\TYPE PARAMETER 
NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME 
INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")  (\TYPE 
PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) DEFAULT YES COMMENT  
"Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM CASCADE.BUTTON  (PLACEMENT 
PLACEMENT)  (BUTTONS MAP/VALUES)  (CELL CELL)  (PICTURE BUTTON.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (
RATE RATE)  (AT.LIMIT  (QUOTE WRAP.AROUND))  (DIRECTION  (QUOTE UP)))  (FOREACH  (ICONS IN  (COND  ((
EQ SHOW.INITIAL.VALUE?  (QUOTE YES)) MAP/VALUES)  (T  (for I in MAP/VALUES collect I when  (NOT  (
EQUAL  (CADR I) INITIAL.VALUE))))))  (I FROM 0)  (J FROM 0) DO  (ITEM ICONIC.INDICATOR  (PLACEMENT  (
PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES J  (CAR INDICATOR.SPACING))  (CAR 
BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (CDR BUTTON/INDICATOR.SPACING
)))))  (PICTURE  (CAR ICONS))  (CELL CELL)  (VALUE  (CADR ICONS))))  (ITEM INITIALIZATION  (PLACEMENT 
PLACEMENT)  (NAME  "Inverting.Iconic.Cascade Init")  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL 
INITIAL.VALUE)))) OTHER  (FNS  ((1 CONVERT.INVERTING.ICONIC.CASCADE.OFFSETS))) CLASSES  (COMPOSITE 
BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.INVERTING.ICONIC.CASCADE.OFFSETS
(LAMBDA (ITEM) (* KKM "25-Aug-84 17:10") (CONVERT.GRIDDED.OFFSETSQ ITEM 
BUTTON/INDICATOR.HORIZONTAL.SPACING BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING VERTICAL.SPACING INDICATOR.SPACING)))
)
(READ.ITEMTYPE LABELLED.BUTTON 5)
(\TYPE ITEM.TYPE NAME LABELLED.BUTTON COMMENT  
"A button, with a label centered on it, which flashes when pushed, and performs an action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words on the button")  (\TYPE PARAMETER NAME FONT 
TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button label")  (\TYPE PARAMETER NAME ACTION.FORM 
TYPE  (FORM) DEFAULT  (ACTION.PRINT  "This action brought to you by a LABELLED.BUTTON") COMMENT  
"The action caused by this button")  (\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT 
SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) SUBITEM.SPECS  ((LABEL BUTTON  (ITEM 
PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS BUTTON.BITMAP.EXTRA) 0)))  (BITMAP 
PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON))  (LINE LABEL)  (XALIGNMENT  (
QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX BUTTON))  (
ACTION.FORM ACTION.FORM))) CLASSES  (COMPOSITE BUTTON))
(READ.ITEMTYPE LABELLED.ICONIC.CASCADE 5)
(\TYPE ITEM.TYPE NAME LABELLED.ICONIC.CASCADE COMMENT  
"A cascade set with labels and icons for both the ON and the OFF values" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME LABELS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE2)) COMMENT  "Label/Value pairs")  (\TYPE PARAMETER NAME BUTTON.PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (\TYPE PARAMETER 
NAME ON.INDICATOR TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The graphic for the icons when ON")  (\TYPE PARAMETER NAME OFF.INDICATOR TYPE  (BITMAP.NAME) DEFAULT 
SMALL.SPOT.BITMAP COMMENT  "The graphic for the icons when OFF")  (\TYPE PARAMETER NAME 
BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  
"Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME INDICATOR.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (0 . 34) COMMENT  "Spacing between the indicators")  (\TYPE PARAMETER NAME 
TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  
"Displacement for the text from the indicators")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (
HELVETICA 10) COMMENT  "The font for the text")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (
ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment of the text")  (\TYPE 
PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT 
NO COMMENT  "Keep going if button is held down?")  (\TYPE PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 
300 COMMENT  "Delay in milliseconds")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT 
 "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  
"An initial value for the cell")  (\TYPE PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) 
DEFAULT YES COMMENT  "Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM 
CASCADE.BUTTON  (PLACEMENT PLACEMENT)  (BUTTONS LABELS)  (CELL CELL)  (PICTURE BUTTON.PICTURE)  (
CONTINUOUS? CONTINUOUS?)  (RATE RATE)  (AT.LIMIT  (QUOTE WRAP.AROUND))  (DIRECTION  (QUOTE UP)))  (
FOREACH  (LABEL IN  (COND  ((EQ SHOW.INITIAL.VALUE?  (QUOTE YES)) LABELS)  (T  (for L in LABELS 
collect L when  (NOT  (EQUAL  (CADR L) INITIAL.VALUE))))))  (I FROM 0)  (J FROM 0) DO  (ITEM 
ICONIC.CASCADE.INDICATOR  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES J  (CAR 
INDICATOR.SPACING))  (CAR BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (
CDR BUTTON/INDICATOR.SPACING)))))  (ON.BITMAP ON.INDICATOR)  (OFF.BITMAP OFF.INDICATOR)  (TEXT  (CAR 
LABEL))  (FONT FONT)  (TEXT.OFFSET TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (
VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (CELL CELL)  (VALUE  (CADR LABEL))))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (NAME  "Labelled.Iconic.Cascade Init")  (ACTION.FORM  (LIST  (QUOTE SET.CELL) 
CELL INITIAL.VALUE)))) OTHER  (FNS  ((1 CONVERT.LABELLED.ICONIC.CASCADE.OFFSETS))) CLASSES  (COMPOSITE
 BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.LABELLED.ICONIC.CASCADE.OFFSETS
(LAMBDA (ITEM) (* KKM "25-Aug-84 17:18") (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT 
TEXT.DISPLACEMENT.↑ TEXT.DISPLACEMENT) (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING INDICATOR.SPACING) (CONVERT.GRIDDED.OFFSETSQ ITEM BUTTON/INDICATOR.HORIZONTAL.SPACING
 BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING)))
)
(READ.ITEMTYPE SET.OF.GRAPHIC.ON/OFF.BUTTONS 5)
(\TYPE ITEM.TYPE NAME SET.OF.GRAPHIC.ON/OFF.BUTTONS COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"Offset for the whole bunch")  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (STRUCTURE  ((TEXT  (LIST  (
STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("Label 1") VALUE.1)  (("Label 2") VALUE.2)) COMMENT  
"The buttons themselves")  (\TYPE PARAMETER NAME ON.PICTURE TYPE  (BITMAP.NAME) DEFAULT 
SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button when ON")  (\TYPE PARAMETER NAME OFF.PICTURE
 TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button when OFF")  (
\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  "Between buttons"
)  (\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  
"Space between buttons in screen coordinates")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (
ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment of the text")  (\TYPE 
PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME TEXT.BITBLT.OPERATION TYPE  (ONEOF  (REPLACE 
PAINT INVERT ERASE)) DEFAULT INVERT COMMENT  
"The BITBLT operation to use to combine the text with the bitmaps")  (\TYPE PARAMETER NAME FONT TYPE  
(FONT) DEFAULT NIL COMMENT  "The font in which to print the labels")  (\TYPE PARAMETER NAME CELL TYPE 
 (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (
CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")) SUBITEM.SPECS  ((FOREACH  (BUTTON
 IN BUTTONS)  (I FROM 0) DO  (ITEM GRAPHIC.ON/OFF.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT  (
NEW.POSITION  (ITIMES I  (CAR BUTTON.SPACING))  (ITIMES I  (CDR BUTTON.SPACING)))))  (ON.PICTURE 
ON.PICTURE)  (OFF.PICTURE OFF.PICTURE)  (TEXT  (CAR BUTTON))  (TEXT.OFFSET TEXT.DISPLACEMENT)  (
HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (BITBLT.OPERATION
 TEXT.BITBLT.OPERATION)  (FONT FONT)  (CELL CELL)  (VALUE  (CADR BUTTON))))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))) OTHER  (
FNS  ((1 CONVERT.SET.OF.GRAPHIC.ON/OFF.BUTTONS.OFFSETS))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.SET.OF.GRAPHIC.ON/OFF.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "26-Aug-84 13:18") (CONVERT.NONGRIDDED.OFFSETS ITEM (QUOTE 
HORIZONTAL.SPACING) (QUOTE VERTICAL.SPACING) (QUOTE BUTTON.SPACING)) (CONVERT.NONGRIDDED.OFFSETS ITEM 
(QUOTE TEXT.DISPLACEMENT) (QUOTE TEXT.DISPLACEMENT.↑) (QUOTE TEXT.DISPLACEMENT))))
)
(READ.ITEMTYPE SEVEN.SEGMENT.NUMBER.PAD 5)
(\TYPE ITEM.TYPE NAME SEVEN.SEGMENT.NUMBER.PAD COMMENT  
"A classic Xerox number pad, putting its value in a cell" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER
 NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The lower left corner of the number pad" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The cell affected by pushing the pad's buttons")  (\TYPE PARAMETER NAME
 INITIAL.VALUE TYPE  (INTEGER) DEFAULT 1 COMMENT  "How to initialize the cell when entering the frame"
)  (\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The graphic for the button")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font for the button labels")  (\TYPE PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 
COMMENT  "The thickness in screen points of the border")  (\TYPE PARAMETER NAME BORDER.COLOR TYPE  (
SHADE) DEFAULT 65535 COMMENT  "The color of the border")  (\TYPE PARAMETER NAME PRINT.FONT TYPE  (FONT
) DEFAULT  (SEVENSEG 36) COMMENT  "The font of the print region")  (\TYPE PARAMETER NAME DIGITS TYPE  
(INTEGER) DEFAULT 4 COMMENT  "The number of digits for the 7-segment display")  (\TYPE PARAMETER NAME 
PRINT.MARGIN TYPE  (INTEGER) DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER
 NAME PRINT.BACKGROUND TYPE  (SHADE) DEFAULT 0 COMMENT  "The background of the printing region")  (
\TYPE PARAMETER NAME PRINT.TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  
"The texture with which the print is combined")  (\TYPE PARAMETER NAME PRINT.SOURCE TYPE  (ONEOF  (
INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  "How the texture is combined with the print")  (
\TYPE PARAMETER NAME PRINT.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE 
COMMENT  "How the print is combined with the background")) SUBITEM.SPECS  ((ITEM VALUE.BAR  (PLACEMENT
  (create REGION LEFT ←  (IDIFFERENCE  (IPLUS  (IDIFFERENCE  (RSH  (IDIFFERENCE  (XCOORD  (ITIMES 3  (
ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))))  (IDIFFERENCE  (ITIMES  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)
)) 17)  (BITMAP.WIDTH PICTURE))) 1)  (IPLUS  (RSH  (ITIMES  (CHARWIDTH 48 PRINT.FONT) DIGITS) 1) 
PRINT.MARGIN BORDER.THICKNESS))  (CAR PLACEMENT)) BUTTON.BITMAP.EXTRA) BOTTOM ←  (IPLUS  (YCOORD  (
ITIMES 4  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE)))))  (CDR PLACEMENT)) WIDTH ←  (IPLUS  (ITIMES  (
CHARWIDTH 48 PRINT.FONT) DIGITS)  (LSH PRINT.MARGIN 1)  (LSH BORDER.THICKNESS 1)) HEIGHT ←  (IPLUS  (
FONTPROP PRINT.FONT  (QUOTE SIZE)) 20)))  (CELL CELL)  (XALIGNMENT  (QUOTE RIGHT))  (YALIGNMENT  (
QUOTE CENTER))  (FONT PRINT.FONT)  (BORDER.THICKNESS BORDER.THICKNESS)  (BORDER.COLOR BORDER.COLOR)  (
PRINT.MARGIN PRINT.MARGIN)  (PRINT.BACKGROUND PRINT.BACKGROUND)  (PRINT.TEXTURE PRINT.TEXTURE)  (
PRINT.SOURCE PRINT.SOURCE)  (PRINT.OPERATION PRINT.OPERATION))  (ITEM INITIALIZATION  (PLACEMENT 
PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 1)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 3  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 1)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 2)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (
BITMAP.WIDTH PICTURE))))  (ITIMES 3  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 
2)  (PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 3)  (PLACEMENT  (TRANSLATE
 PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 3  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 3)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 4)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 2  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 4)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 5)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (
BITMAP.WIDTH PICTURE))))  (ITIMES 2  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 
5)  (PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 6)  (PLACEMENT  (TRANSLATE
 PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 2  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 6)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 7)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 1  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 7)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 8)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (
BITMAP.WIDTH PICTURE))))  (ITIMES 1  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 
8)  (PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 9)  (PLACEMENT  (TRANSLATE
 PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 1  (ADD1  (YGRID  (
BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (DIGIT 9)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
GENERAL.BUTTON  (TEXT  (QUOTE  ("")))  (PLACEMENT PLACEMENT)  (ACTION  (LIST  (QUOTE ACTION.DONOTHING)
))  (PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 0)  (PLACEMENT  (TRANSLATE
 PLACEMENT  (ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (CELL CELL)  (DIGIT 0)  (PICTURE 
PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON  (LABEL  "C")  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2
  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (CELL CELL)  (DIGIT 0)  (PICTURE PICTURE)  (FONT FONT)
)) CLASSES  (COMPOSITE BUTTON))
(READ.ITEMTYPE THERMOMETER 5)
(\TYPE ITEM.TYPE NAME THERMOMETER COMMENT  
"A thermometer with a pair of increase/decrease buttons for changing a cell within a specified range" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 40 200) 
COMMENT  "The region of the screen for the thermometer itself")  (\TYPE PARAMETER NAME 
BUTTON/THERMOMETER.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (17 . 68) COMMENT  
"The spacing between the lower left corner of the thermometer and the lower left corner of the buttons
")  (\TYPE PARAMETER NAME HORIZONTAL.BUTTON.SPACING TYPE  (INTEGER) DEFAULT 51 COMMENT  
"The spacing in grid points between the buttons")  (\TYPE PARAMETER NAME UP.PICTURE TYPE  (BITMAP.NAME
) DEFAULT UP.BUTTON COMMENT  "The graphic for the UP button")  (\TYPE PARAMETER NAME DOWN.PICTURE TYPE
  (BITMAP.NAME) DEFAULT DOWN.BUTTON COMMENT  "The graphic for the DOWN button")  (\TYPE PARAMETER NAME
 CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell that holds the value for the thermometer")  (
\TYPE PARAMETER NAME MINIMUM.VALUE TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum of the range of values")  (\TYPE PARAMETER NAME MAXIMUM.VALUE TYPE  (INTEGER) DEFAULT 10 
COMMENT  "The maximum of the range of values")  (\TYPE PARAMETER NAME INCREMENT TYPE  (INTEGER) 
DEFAULT 1 COMMENT  "The step size for each activation")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (
INTEGER) DEFAULT 5 COMMENT  "How to initialize the cell when entering the frame")  (\TYPE PARAMETER 
NAME AT.LIMIT TYPE  (ONEOF  (STICK.AT.LIMIT WRAP.AROUND)) DEFAULT STICK.AT.LIMIT COMMENT  
"What to do when you reach the limit")  (\TYPE PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT
  "Delay in milliseconds")  (\TYPE PARAMETER NAME MERCURY.TEXTURE TYPE  (SHADE) DEFAULT 23130 COMMENT 
 "The color of the shaded-in area")  (\TYPE PARAMETER NAME BORDER.TEXTURE TYPE  (SHADE) DEFAULT 65535 
COMMENT  "The color of the border")  (\TYPE PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 7 
COMMENT  "The thickness in screen points of the border")) SUBITEM.SPECS  ((ITEM LIGHT.BAR  (PLACEMENT 
 (create REGION LEFT ←  (IPLUS  (CAR PLACEMENT) BORDER.THICKNESS) BOTTOM ←  (IPLUS  (CADR PLACEMENT) 
BORDER.THICKNESS) WIDTH ←  (IDIFFERENCE  (CADDR PLACEMENT)  (ITIMES BORDER.THICKNESS 2)) HEIGHT ←  (
IDIFFERENCE  (CADDDR PLACEMENT)  (ITIMES BORDER.THICKNESS 2))))  (CELL CELL)  (MINIMUM.VALUE 
MINIMUM.VALUE)  (MAXIMUM.VALUE MAXIMUM.VALUE)  (DIRECTION  (QUOTE BOTTOM))  (TEXTURE MERCURY.TEXTURE))
  (ITEM BORDER  (PLACEMENT PLACEMENT)  (THICKNESS BORDER.THICKNESS)  (COLOR BORDER.TEXTURE))  (ITEM 
INITIALIZATION  (PLACEMENT  (NEW.POSITION  (CAR PLACEMENT)  (CADR PLACEMENT)))  (ACTION.FORM  (LIST  (
QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))  (ITEM UP.DOWN.BUTTONS  (PLACEMENT  (PTRANSLATE  (
NEW.POSITION  (CAR PLACEMENT)  (CADR PLACEMENT))  (IMINUS  (CAR BUTTON/THERMOMETER.SPACING))  (IMINUS 
 (CDR BUTTON/THERMOMETER.SPACING))))  (CELL CELL)  (BUTTON.SPACING  (NEW.POSITION 
HORIZONTAL.BUTTON.SPACING 0))  (UP.PICTURE UP.PICTURE)  (DOWN.PICTURE DOWN.PICTURE)  (MINIMUM 
MINIMUM.VALUE)  (MAXIMUM MAXIMUM.VALUE)  (INCREMENT INCREMENT)  (AT.LIMIT AT.LIMIT)  (RATE RATE))) 
OTHER  (FNS  ((1 CONVERT.THERMOMETER.OFFSETS))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.THERMOMETER.OFFSETS
(LAMBDA (ITEM) (* KKM "25-Aug-84 16:54") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING BUTTON/THERMOMETER.SPACING) (CONVERT.GRIDDED.OFFSET ITEM (QUOTE 
HORIZONTAL.BUTTON.SPACING))))
)
(READ.ITEMTYPE XEROX.NUMBER.BUTTON 5)
(\TYPE ITEM.TYPE NAME XEROX.NUMBER.BUTTON COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button label")  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME DIGIT 
TYPE  (INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME
 PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (
\TYPE PARAMETER NAME STATE.CELL TYPE  (CELL) DEFAULT NUMBER.PAD.STATE COMMENT  
"A cell that keeps track of the initial state of the number pad (that is, whether a new number replaces the old one)"
)) SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (
MINUS BUTTON.BITMAP.EXTRA) 0)))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER 
BUTTON))  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (BQUOTE  (PROG NIL  (CHANGE.CELL , CELL ,  (KWOTE 
DIGIT))  (SET.CELL , STATE.CELL ,  (QUOTE ON))))))) CLASSES  (COMPOSITE BUTTON))
(READ.ITEMTYPE XEROX.NUMBER.BUTTON.NEXT.DIGIT 5)
(\TYPE ITEM.TYPE NAME XEROX.NUMBER.BUTTON.NEXT.DIGIT COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the label")  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME DIGIT TYPE  (
INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME 
PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (
\TYPE PARAMETER NAME STATE.CELL TYPE  (CELL) DEFAULT NUMBER.PAD.STATE COMMENT  
"A cell that keeps track of the initial state of the number pad (that is, whether a new number replaces the old one)"
)) SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (
MINUS BUTTON.BITMAP.EXTRA) 0)))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER 
BUTTON))  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  (QUOTE NEXT.DIGIT.CELL.XEROX) CELL  (KWOTE 
DIGIT) STATE.CELL)))) CLASSES  (COMPOSITE BUTTON))
(READ.ITEMTYPE XEROX.NUMBER.PAD 5)
(\TYPE ITEM.TYPE NAME XEROX.NUMBER.PAD COMMENT  
"A classic Xerox number pad, putting its value in a cell" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER
 NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The lower left corner of the number pad" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The cell affected by pushing the pad's buttons")  (\TYPE PARAMETER NAME
 INITIAL.VALUE TYPE  (INTEGER) DEFAULT 1 COMMENT  "How to initialize the cell when entering the frame"
)  (\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The graphic for the button")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font for the button labels")  (\TYPE PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 
COMMENT  "The thickness in screen points of the border")  (\TYPE PARAMETER NAME BORDER.COLOR TYPE  (
SHADE) DEFAULT 65535 COMMENT  "The color of the border")  (\TYPE PARAMETER NAME PRINT.FONT TYPE  (FONT
) DEFAULT NIL COMMENT  "The font of the print region")  (\TYPE PARAMETER NAME PRINT.MARGIN TYPE  (
INTEGER) DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER NAME 
PRINT.BACKGROUND TYPE  (SHADE) DEFAULT 0 COMMENT  "The background of the printing region")  (\TYPE 
PARAMETER NAME PRINT.TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  
"The texture with which the print is combined")  (\TYPE PARAMETER NAME PRINT.SOURCE TYPE  (ONEOF  (
INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  "How the texture is combined with the print")  (
\TYPE PARAMETER NAME PRINT.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE 
COMMENT  "How the print is combined with the background")  (\TYPE PARAMETER NAME STATE.CELL TYPE  (
CELL) DEFAULT NUMBER.PAD.STATE COMMENT  
"A cell that keeps track of the initial state of the number pad (that is, whether a new number replaces the old one)"
)) SUBITEM.SPECS  ((ITEM VALUE.BAR  (PLACEMENT  (NEW.REGION  (NEW.POSITION  (IDIFFERENCE  (CAR 
PLACEMENT) BUTTON.BITMAP.EXTRA)  (IPLUS  (YCOORD  (ITIMES 4  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))
)  (CDR PLACEMENT)))  (IDIFFERENCE  (XCOORD  (ITIMES 3  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))))  (
IDIFFERENCE  (ITIMES  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))) 17)  (BITMAP.WIDTH PICTURE)))  (IPLUS  (
FONTPROP PRINT.FONT  (QUOTE SIZE)) 20)))  (CELL CELL)  (XALIGNMENT  (QUOTE CENTER))  (YALIGNMENT  (
QUOTE CENTER))  (FONT PRINT.FONT)  (BORDER.THICKNESS BORDER.THICKNESS)  (BORDER.COLOR BORDER.COLOR)  (
PRINT.MARGIN PRINT.MARGIN)  (PRINT.BACKGROUND PRINT.BACKGROUND)  (PRINT.TEXTURE PRINT.TEXTURE)  (
PRINT.SOURCE PRINT.SOURCE)  (PRINT.OPERATION PRINT.OPERATION))  (ITEM INITIALIZATION  (PLACEMENT 
PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))  (ITEM INITIALIZATION
  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) STATE.CELL  (QUOTE OFF))))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 1)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 3  (ADD1  (
YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 1)  (PICTURE PICTURE
)  (FONT FONT))  (ITEM XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 2)  (PLACEMENT  (TRANSLATE PLACEMENT  (
ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 3  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))
))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 2)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 3)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID 
 (BITMAP.WIDTH PICTURE))))  (ITIMES 3  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (
STATE.CELL STATE.CELL)  (DIGIT 3)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 4)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 2  (ADD1  (
YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 4)  (PICTURE PICTURE
)  (FONT FONT))  (ITEM XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 5)  (PLACEMENT  (TRANSLATE PLACEMENT  (
ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 2  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))
))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 5)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 6)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID 
 (BITMAP.WIDTH PICTURE))))  (ITIMES 2  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (
STATE.CELL STATE.CELL)  (DIGIT 6)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 7)  (PLACEMENT  (TRANSLATE PLACEMENT 0  (ITIMES 1  (ADD1  (
YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 7)  (PICTURE PICTURE
)  (FONT FONT))  (ITEM XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 8)  (PLACEMENT  (TRANSLATE PLACEMENT  (
ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE))))  (ITIMES 1  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))
))))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 8)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 9)  (PLACEMENT  (TRANSLATE PLACEMENT  (ITIMES 2  (ADD1  (XGRID 
 (BITMAP.WIDTH PICTURE))))  (ITIMES 1  (ADD1  (YGRID  (BITMAP.HEIGHT PICTURE))))))  (CELL CELL)  (
STATE.CELL STATE.CELL)  (DIGIT 9)  (PICTURE PICTURE)  (FONT FONT))  (ITEM GENERAL.BUTTON  (TEXT  (
QUOTE  ("")))  (PLACEMENT PLACEMENT)  (ACTION  (LIST  (QUOTE ACTION.DONOTHING)))  (PICTURE PICTURE)  (
FONT FONT))  (ITEM XEROX.NUMBER.BUTTON.NEXT.DIGIT  (LABEL 0)  (PLACEMENT  (TRANSLATE PLACEMENT  (
ITIMES 1  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (CELL CELL)  (STATE.CELL STATE.CELL)  (DIGIT 0
)  (PICTURE PICTURE)  (FONT FONT))  (ITEM XEROX.NUMBER.BUTTON  (LABEL  "C")  (PLACEMENT  (TRANSLATE 
PLACEMENT  (ITIMES 2  (ADD1  (XGRID  (BITMAP.WIDTH PICTURE)))) 0))  (CELL CELL)  (STATE.CELL 
STATE.CELL)  (DIGIT 0)  (PICTURE PICTURE)  (FONT FONT))) OTHER  (FNS  ((NIL NEXT.DIGIT.CELL.XEROX))) 
CLASSES  (COMPOSITE BUTTON))
(DEFINEQ

(NEXT.DIGIT.CELL.XEROX
(NLAMBDA (FIELD.NAME NEW.DIGIT.FORM STATE.CELL DONT.TRACE) (* KKM "26-MAY-83 10:44") (PROG (NEW.DIGIT 
OLD.VALUE STATE) (SETQ NEW.DIGIT (EVAL NEW.DIGIT.FORM)) (SETQ OLD.VALUE (GET.CURRENT.VALUE FIELD.NAME)
) (SETQ STATE (GET.CURRENT.VALUE STATE.CELL)) (COND ((NOT (NUMBERP NEW.DIGIT)) (TRILLIUM.PRINTOUT 
"CHANGE.CELL on cell " FIELD.NAME "; new digit is not a number: " NEW.DIGIT)) ((NOT (NUMBERP OLD.VALUE
)) (TRILLIUM.PRINTOUT "CHANGE.CELL on cell " FIELD.NAME "; current value is not a number; " OLD.VALUE)
) (T (COND ((EQ STATE (QUOTE OFF)) (SET.CURRENT.VALUE STATE.CELL (QUOTE ON) DONT.TRACE) (
CHANGE.CURRENT.VALUE FIELD.NAME NEW.DIGIT DONT.TRACE)) (T (CHANGE.CURRENT.VALUE FIELD.NAME (IPLUS (
ITIMES OLD.VALUE 10) NEW.DIGIT) DONT.TRACE))))))))
)

(RPAQ? COMB.TEXT.DSP )
(COMPILE.INTERNAL.FNS.IF.NECESSARY)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA )

(ADDTOVAR NLAML NEXT.DIGIT.CELL.XEROX)

(ADDTOVAR LAMA )
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (11376 11549 (CONVERT.GRAPHIC.BUTTON.OFFSETS 11386 . 11547)) (13913 14099 (
CONVERT.GRAPHIC.CHANGE.FRAME.BUTTON.OFFSETS 13923 . 14097)) (16759 18741 (COMBINE.TEXT.WITH.BITMAP 
16769 . 17987) (COMBINE.LINE.WITH.BITMAP 17989 . 18569) (CONVERT.GRAPHIC.ON/OFF.BUTTON.OFFSETS 18571
 . 18739)) (22011 22307 (CONVERT.ICONIC.CASCADE.OFFSETS 22021 . 22305)) (25087 25393 (
CONVERT.INVERTING.ICONIC.CASCADE.OFFSETS 25097 . 25391)) (30028 30422 (
CONVERT.LABELLED.ICONIC.CASCADE.OFFSETS 30038 . 30420)) (32945 33279 (
CONVERT.SET.OF.GRAPHIC.ON/OFF.BUTTONS.OFFSETS 32955 . 33277)) (42216 42464 (
CONVERT.THERMOMETER.OFFSETS 42226 . 42462)) (51569 52359 (NEXT.DIGIT.CELL.XEROX 51579 . 52357)))))
STOP