(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