(FILECREATED "30-Nov-84 10:03:08" {AZTEC}<TRILLIUM>BIRTHDAY84>ITEMTYPES>IDO-COMPOSITE-ITEMTYPES.;1 29017  

      changes to:  (ITEMTYPES SET.OF.INDICATORS)
		   (VARS IDO-COMPOSITE-ITEMTYPESCOMS)

      previous date: "25-Aug-84 15:48:00" {AZTEC}<TRILLIUM>BIRTHDAY84>IDO-COMPOSITE-ITEMTYPES.;1)


(PRETTYCOMPRINT IDO-COMPOSITE-ITEMTYPESCOMS)

(RPAQQ IDO-COMPOSITE-ITEMTYPESCOMS ((ITEMTYPES ANIMATED.BITMAPS BORDERED.INVERTING.SENSITIVE.REGION 
					       BORDERED.SENSITIVE.REGION BORDERED.SHADED.REGION 
					       CONDITIONAL.VALUE.BAR ICONIC.CASCADE.INDICATOR 
					       IF.THEN.ELSE IMPLICATION.MULTIPLE.CELLS 
					       INITIALIZE.CELL INTERACTION.OVERRIDE 
					       LIGHT.BAR.2.DIMENSION.W/BORDER 
					       LIGHT.BAR.REGION.W/BKGD/BORDER 
					       PICTURE.VARIABLE.PLACEMENT.W/BORDER SET.OF.INDICATORS)
	(P (COMPILE.INTERNAL.FNS.IF.NECESSARY))))
(READ.ITEMTYPE ANIMATED.BITMAPS 5)
(\TYPE ITEM.TYPE NAME ANIMATED.BITMAPS COMMENT  
"A set of indicators with a background picture, affected by the same cell" KIND COMPOSITE PARAMETERS  
((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"Offset for the whole bunch")  (\TYPE PARAMETER NAME INDICATORS TYPE  (LIST  (STRUCTURE  ((BITMAP  (
BITMAP.NAME))  (ON-COLOR  (COLOR.NAME))  (OFF-COLOR  (COLOR.NAME))  (VALUE  (CONSTANT))))) DEFAULT  ((
OFFPAGE.BUTTON.BITMAP BLACK WHITE 1)  (SMALL.BUTTON.BITMAP BLACK WHITE 2)  (EXTERNAL.BUTTON.BITMAP 
BLACK WHITE 3)) COMMENT  "A list of bitmap/on-color/off-color/reference.value sets for the indicators"
)  (\TYPE PARAMETER NAME BACKGROUND-BITMAP TYPE  (BITMAP.NAME) DEFAULT EXAMPLE.BITMAP COMMENT  
"The background bitmap")  (\TYPE PARAMETER NAME BACKGROUND-FIGURE-COLOR TYPE  (COLOR.NAME) DEFAULT 
BLACK COMMENT  "The figure color for the background picture")  (\TYPE PARAMETER NAME 
BACKGROUND-GROUND-COLOR TYPE  (COLOR.NAME) DEFAULT WHITE COMMENT  
"The ground color for the background picture")  (\TYPE PARAMETER NAME SEQUENCE.CELL TYPE  (CELL) 
DEFAULT SEQUENCE.ANIMATION COMMENT  
"The cell whose value is incremented through the animation sequence")  (\TYPE PARAMETER NAME 
SEQUENCE.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  "The start value for the amimation sequence")  (
\TYPE PARAMETER NAME SEQUENCE.MAXIMUM TYPE  (INTEGER) DEFAULT 10 COMMENT  
"The end value for the animation sequence")  (\TYPE PARAMETER NAME ACTIVATION.CELL TYPE  (CELL) 
DEFAULT ACTIVATE.ANIMATION COMMENT  "Turns animation on and off (value can be ON or OFF)")  (\TYPE 
PARAMETER NAME INITIAL.VALUE TYPE  (ONEOF  (ON OFF)) DEFAULT OFF COMMENT  
"Initial value for ACTIVATION.CELL")  (\TYPE PARAMETER NAME DELAY TYPE  (INTEGER) DEFAULT 1000 COMMENT
  "Time (in milliseconds) between each step in the sequence")  (\TYPE PARAMETER NAME TIMEOUT.BASE TYPE
  (CELL) DEFAULT ANIMATION.TIMEOUT COMMENT  "A cell to hold the reference time")) SUBITEM.SPECS  ((
ITEM PICTURE  (PLACEMENT PLACEMENT)  (BITMAP BACKGROUND-BITMAP)  (SOURCE  (QUOTE INPUT))  (OPERATION  
(QUOTE REPLACE))  (TEXTURE 65535)  (FIGURE-COLOR BACKGROUND-FIGURE-COLOR)  (GROUND-COLOR 
BACKGROUND-GROUND-COLOR))  (FOREACH  (THIS.INDICATOR IN INDICATORS)  (I FROM 0) DO  (ITEM INDICATOR  (
PLACEMENT PLACEMENT)  (BITMAP  (CAR THIS.INDICATOR))  (ON-COLOR  (CADR THIS.INDICATOR))  (OFF-COLOR  (
CADDR THIS.INDICATOR))  (CELL SEQUENCE.CELL)  (REFERENCE.VALUE  (CADDDR THIS.INDICATOR))))  (ITEM 
TIMEOUT  (PLACEMENT PLACEMENT)  (BASE TIMEOUT.BASE)  (DELAY DELAY)  (INITIAL.STATE INITIAL.VALUE)  (
ACTION.FORM  (BQUOTE  (PROG  (NEW.VALUE)  (COND  ((EQ  (CELL.VALUE , ACTIVATION.CELL)  (QUOTE ON))  (
SETQ ,  (QUOTE NEW.VALUE)  (ADD1  (CELL.VALUE , SEQUENCE.CELL)))  (CHANGE.CELL , SEQUENCE.CELL  (COND 
 ((IGREATERP ,  (QUOTE NEW.VALUE) , SEQUENCE.MAXIMUM) , SEQUENCE.MINIMUM)  (T NEW.VALUE)))))  (
START.TIMEOUT , TIMEOUT.BASE)))))  (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (BQUOTE 
 (PROG NIL  (SET.CELL , SEQUENCE.CELL ,  (KWOTE SEQUENCE.MINIMUM))  (SET.CELL , ACTIVATION.CELL ,  (
KWOTE INITIAL.VALUE))))))  (ITEM IMPLICATION  (PLACEMENT PLACEMENT)  (CELL ACTIVATION.CELL)  (
ACTION.FORM  (BQUOTE  (COND  ((EQ NEW.VALUE  (QUOTE ON))  (START.TIMEOUT , TIMEOUT.BASE))  (T  (
DISABLE.TIMEOUT , TIMEOUT.BASE))))))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE BORDERED.INVERTING.SENSITIVE.REGION 5)
(\TYPE ITEM.TYPE NAME BORDERED.INVERTING.SENSITIVE.REGION COMMENT  
"A bordered sensitive region that inverts when pressed" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER 
NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 30 30) COMMENT  "The region of the sensitive region") 
 (\TYPE PARAMETER NAME WIDTH TYPE  (INTEGER) DEFAULT 4 COMMENT  "The width of the shaded border")  (
\TYPE PARAMETER NAME SHADE TYPE  (SHADE) DEFAULT 32768 COMMENT  "The grey shade of the border")  (
\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT PAINT COMMENT  
"The operation for BITBLT of the border")  (\TYPE PARAMETER NAME ACTION TYPE  (FORM) DEFAULT  (
ACTION.PRINT  "This action brought to you by a BORDERED.SENSITIVE.REGION") COMMENT  
"The action to be taken when this region is touched")) SUBITEM.SPECS  ((ITEM 
INVERTING.SENSITIVE.REGION  (PLACEMENT PLACEMENT)  (ACTION.FORM ACTION))  (ITEM BORDER  (PLACEMENT 
PLACEMENT)  (THICKNESS WIDTH)  (OPERATION OPERATION)  (COLOR SHADE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE BORDERED.SENSITIVE.REGION 5)
(\TYPE ITEM.TYPE NAME BORDERED.SENSITIVE.REGION COMMENT  
"A bordered sensitive region that inverts when pressed" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER 
NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 30 30) COMMENT  "The region of the sensitive region") 
 (\TYPE PARAMETER NAME WIDTH TYPE  (INTEGER) DEFAULT 4 COMMENT  "The width of the shaded border")  (
\TYPE PARAMETER NAME SHADE TYPE  (SHADE) DEFAULT 32768 COMMENT  "The grey shade of the border")  (
\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT PAINT COMMENT  
"The operation for BITBLT of the border")  (\TYPE PARAMETER NAME ACTION TYPE  (FORM) DEFAULT  (
ACTION.PRINT  "This action brought to you by a BORDERED.SENSITIVE.REGION") COMMENT  
"The action to be taken when this region is touched")) SUBITEM.SPECS  ((ITEM 
INVERTING.SENSITIVE.REGION  (PLACEMENT PLACEMENT)  (ACTION.FORM ACTION))  (ITEM BORDER  (PLACEMENT 
PLACEMENT)  (THICKNESS WIDTH)  (OPERATION OPERATION)  (COLOR SHADE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE BORDERED.SHADED.REGION 5)
(\TYPE ITEM.TYPE NAME BORDERED.SHADED.REGION COMMENT  "A bitmap to be added to the screen as artwork" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 30 30) 
COMMENT  "The region to be shaded")  (\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE PAINT 
INVERT ERASE)) DEFAULT REPLACE COMMENT  "Operation for BITBLT")  (\TYPE PARAMETER NAME SHADE.TEXTURE 
TYPE  (SHADE) DEFAULT 42405 COMMENT  "The texture for the shaded region")  (\TYPE PARAMETER NAME 
BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  "The width in screen points of the border")  (
\TYPE PARAMETER NAME BORDER.TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  "The texture for the border")
) SUBITEM.SPECS  ((ITEM SHADED.REGION  (PLACEMENT PLACEMENT)  (OPERATION OPERATION)  (TEXTURE 
SHADE.TEXTURE))  (ITEM BORDER  (PLACEMENT PLACEMENT)  (THICKNESS BORDER.THICKNESS)  (OPERATION 
OPERATION)  (COLOR BORDER.TEXTURE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE CONDITIONAL.VALUE.BAR 5)
(\TYPE ITEM.TYPE NAME CONDITIONAL.VALUE.BAR COMMENT  "A bordered region through which to view a cell" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (170 170 136 34) 
COMMENT  "The boundaries of the viewing area" GRID.TYPE  (GRIDREGION))  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell which triggers this implication")  (\TYPE PARAMETER 
NAME RESULT.CELL TYPE  (CELL) DEFAULT RESULT.CELL COMMENT  "Cell in which the result is put.")  (\TYPE
 PARAMETER NAME ACTION.LIST TYPE  (LIST  (STRUCTURE  ((TRIGGER.VALUE  (CONSTANT))  (RESULT.VALUE  (
CONSTANT))))) DEFAULT  ((1  "ONE")  (2  "TWO")  (3  "THREE")) COMMENT  
"List of trigger values and results; If match of trigger value to TRIGGER.CELL then set RESULT.CELL to result value"
)  (\TYPE PARAMETER NAME XALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment")  (\TYPE PARAMETER NAME YALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT 
CENTER COMMENT  "Vertical alignment")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font to print the value in")  (\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 BORDER.OPERATION TYPE 
 (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"How the border is combined with the screen")  (\TYPE PARAMETER NAME PRINT.MARGIN TYPE  (INTEGER) 
DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER NAME PRINT.BACKGROUND TYPE  
(SHADE) DEFAULT 42405 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 BORDER  (PLACEMENT PLACEMENT)  (THICKNESS BORDER.THICKNESS)  (OPERATION 
BORDER.OPERATION)  (COLOR BORDER.COLOR))  (ITEM PRINT.REGION  (PLACEMENT  (REGION.WITHIN.BORDER 
PLACEMENT BORDER.THICKNESS))  (CELL RESULT.CELL)  (XALIGNMENT XALIGNMENT)  (YALIGNMENT YALIGNMENT)  (
FONT FONT)  (MARGIN PRINT.MARGIN)  (BACKGROUND PRINT.BACKGROUND)  (TEXTURE PRINT.TEXTURE)  (SOURCE 
PRINT.SOURCE)  (OPERATION PRINT.OPERATION))  (ITEM SELECTQ.IMPLICATION  (PLACEMENT  (NEW.POSITION  (
fetch  (REGION LEFT) of PLACEMENT)  (fetch  (REGION BOTTOM) of PLACEMENT)))  (CELL CELL)  (RESULT.CELL
 RESULT.CELL)  (ACTION.LIST ACTION.LIST))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE ICONIC.CASCADE.INDICATOR 5)
(\TYPE ITEM.TYPE NAME ICONIC.CASCADE.INDICATOR COMMENT  
"An indicator with an ON and an OFF bitmap, and associated text" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the light" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME ON.BITMAP TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The graphics for the ON indicator")  (\TYPE PARAMETER NAME OFF.BITMAP TYPE  (BITMAP.NAME) DEFAULT 
SMALL.SPOT.BITMAP COMMENT  "The graphics for the OFF indicator")  (\TYPE PARAMETER NAME TEXT TYPE  (
LIST  (STRING)) DEFAULT  (Label for Light) COMMENT  "The text associated with the light")  (\TYPE 
PARAMETER NAME TEXT FONT TYPE  (FONT) DEFAULT  (HELVETICA 10) COMMENT  "The font for the text")  (
\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR) DEFAULT  (51 . 17) COMMENT  
"The offset for the text position from the indicator")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT 
TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT  (QUOTE LEFT) COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT  (QUOTE 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  ((ITEM INDICATOR  (
PLACEMENT PLACEMENT)  (BITMAP ON.BITMAP)  (CELL CELL)  (REFERENCE.VALUE VALUE)  (CONDITION.OPERATION  
(QUOTE =)))  (ITEM INDICATOR  (PLACEMENT PLACEMENT)  (BITMAP OFF.BITMAP)  (CELL CELL)  (
REFERENCE.VALUE VALUE)  (CONDITION.OPERATION  (QUOTE NOT.EQUAL)))  (ITEM BLOCK.OF.TEXT  (PLACEMENT  (
PTRANSLATE PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (FONT FONT)  (XALIGNMENT 
HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT))) OTHER  (FNS  ((1 
CONVERT.ICONIC.CASCADE.INDICATOR.OFFSETS))) CLASSES  (COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.ICONIC.CASCADE.INDICATOR.OFFSETS
  [LAMBDA (ITEM)                                             (* edited: "16-Aug-84 10:07")
    (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET VERTICAL.OFFSET TEXT.OFFSET])
)
(READ.ITEMTYPE IF.THEN.ELSE 5)
(\TYPE ITEM.TYPE NAME IF.THEN.ELSE COMMENT  
"Computes a conditional expression and chooses one of two actions as a result" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The location of this item" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELLS TYPE  (LIST  (CELL)) 
DEFAULT  (CELL.1) COMMENT  "The cells upon which to trigger the computation")  (\TYPE PARAMETER NAME 
CONDITION TYPE  (FORM) DEFAULT T COMMENT  
"Formula for conditional - can use the following operators: =,GT,LT,GE,LE,AND,OR,NOT.")  (\TYPE 
PARAMETER NAME THEN.CLAUSE TYPE  (FORM) DEFAULT  (ACTION.PRINT  
"This was caused by a true condition of an IF.THEN.ELSE.IMPLICATION") COMMENT  
"The action caused if the CONDITION is True")  (\TYPE PARAMETER NAME ELSE.CLAUSE TYPE  (FORM) DEFAULT 
 (ACTION.DONOTHING) COMMENT  "The action caused if the condition is False")) SUBITEM.SPECS  ((FOREACH 
 (CELL IN CELLS)  (X FROM 0) DO  (ITEM IMPLICATION  (PLACEMENT  (TRANSLATE PLACEMENT X 0))  (CELL CELL
)  (ACTION.FORM  (LIST  (QUOTE ACTON.IF.THEN.ELSE)  (KWOTE CONDITION)  (KWOTE CELLS)  (KWOTE 
THEN.CLAUSE)  (KWOTE ELSE.CLAUSE)))))) OTHER  (FNS  ((ACTON ACTON.IF.THEN.ELSE))) CLASSES  (COMPOSITE)
)
(DEFINEQ

(ACTON.IF.THEN.ELSE
  [LAMBDA (CONDITION INPUT.CELL.NAMES THEN.ACTION ELSE.ACTION)
                                                             (* edited: "16-FEB-83 14:42")
    (COND
      ([EVALA CONDITION (for CELL in INPUT.CELL.NAMES collect (CONS CELL (GET.CURRENT.VALUE CELL]
	(TRILLIUM.EVAL THEN.ACTION))
      (T (TRILLIUM.EVAL ELSE.ACTION])
)
(READ.ITEMTYPE IMPLICATION.MULTIPLE.CELLS 5)
(\TYPE ITEM.TYPE NAME IMPLICATION.MULTIPLE.CELLS COMMENT  "A general implication on a list of cells" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) 
COMMENT  "The location of this item" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELLS TYPE  (LIST  
(CELL)) DEFAULT  (CELL.1) COMMENT  "The cells upon which to trigger the computation")  (\TYPE 
PARAMETER NAME ACTION.FORM TYPE  (FORM) DEFAULT  (ACTION.PRINT  
"This action brought to you by an IMPLICATION.MULTIPLE.CELLS") COMMENT  
"The action of the implication")) SUBITEM.SPECS  ((FOREACH  (CELL IN CELLS)  (X FROM 0) DO  (ITEM 
IMPLICATION  (PLACEMENT  (TRANSLATE PLACEMENT X 0))  (CELL CELL)  (ACTION.FORM  (LIST  (QUOTE 
ACTON.IMPLICATION.MULTIPLE.CELLS)  (KWOTE ACTION.FORM)  (KWOTE CELLS)))))) OTHER  (FNS  ((ACTON 
ACTON.IMPLICATION.MULTIPLE.CELLS))) CLASSES  (COMPOSITE))
(DEFINEQ

(ACTON.IMPLICATION.MULTIPLE.CELLS
  [LAMBDA (ACTION INPUT.CELL.NAMES)                          (* KKM "14-OCT-83 13:51")
    (EVALA ACTION (for CELL in INPUT.CELL.NAMES collect (CONS CELL (GET.CURRENT.VALUE CELL])
)
(READ.ITEMTYPE INITIALIZE.CELL 5)
(\TYPE ITEM.TYPE NAME INITIALIZE.CELL COMMENT  "An initializer to set a cell to a value" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"A position on the screen for reference" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The cell to initialize")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT) 
DEFAULT 1 COMMENT  "The value to assign to the cell")  (\TYPE PARAMETER NAME SIDE.EFFECTS TYPE  (ONEOF
  (CHANGE.DISPLAYERS DON'T.CHANGE.DISPLAYERS)) DEFAULT CHANGE.DISPLAYERS COMMENT  
"Whether or not to affect anything else when the cell is initialized")) SUBITEM.SPECS  ((ITEM 
INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (SELECTQ SIDE.EFFECTS  (CHANGE.DISPLAYERS 
 (QUOTE CHANGE.CELL))  (DON'T.CHANGE.DISPLAYERS  (QUOTE SET.CELL)) NIL) CELL  (KWOTE VALUE))))) 
CLASSES  (COMPOSITE))
(READ.ITEMTYPE INTERACTION.OVERRIDE 5)
(\TYPE ITEM.TYPE NAME INTERACTION.OVERRIDE COMMENT  "An interlock between two cells" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"A location for identification" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL.1 TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "A cell to be tested")  (\TYPE PARAMETER NAME VALUE.1 TYPE  (CONSTANT) DEFAULT
 1 COMMENT  "Condition on cell 1")  (\TYPE PARAMETER NAME CELL.2 TYPE  (CELL) DEFAULT CELL.1 COMMENT  
"A cell to be tested")  (\TYPE PARAMETER NAME VALUE.2 TYPE  (CONSTANT) DEFAULT 1 COMMENT  
"Condition on cell 2")  (\TYPE PARAMETER NAME VALUE.2.GOOD TYPE  (CONSTANT) DEFAULT 2 COMMENT  
"The forced value for cell.2")  (\TYPE PARAMETER NAME BLOCKED.SIDE.EFFECT TYPE  (FORM) DEFAULT  (
ACTION.DONOTHING) COMMENT  "Addition action to occur when CELL.2 is blocked")  (\TYPE PARAMETER NAME 
FORCED.SIDE.EFFECT TYPE  (FORM) DEFAULT  (ACTION.DONOTHING) COMMENT  
"Additional action to occur when CELL.2 is forced to VALUE.2.GOOD")) SUBITEM.SPECS  ((ITEM IMPLICATION
  (PLACEMENT PLACEMENT)  (CELL CELL.1)  (ACTION.FORM  (BQUOTE  (COND  ((AND  (EQUAL NEW.VALUE ,  (
KWOTE VALUE.1))  (EQUAL  (CELL.VALUE , CELL.2) ,  (KWOTE VALUE.2))) , FORCED.SIDE.EFFECT  (CHANGE.CELL
 , CELL.2 ,  (KWOTE VALUE.2.GOOD)))))))  (ITEM INHIBITOR  (PLACEMENT  (TRANSLATE PLACEMENT 1 0))  (
CELL CELL.2)  (ACTION.FORM  (BQUOTE  (COND  ((AND  (EQUAL  (CELL.VALUE , CELL.1) ,  (KWOTE VALUE.1))  
(EQUAL NEW.VALUE ,  (KWOTE VALUE.2))) , BLOCKED.SIDE.EFFECT T)  (T NIL)))))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE LIGHT.BAR.2.DIMENSION.W/BORDER 5)
(\TYPE ITEM.TYPE NAME LIGHT.BAR.2.DIMENSION.W/BORDER COMMENT  
"A two-dimensional light.bar whose region on the screen is affected by the value of 4 cells" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 30 30) COMMENT
  "The region which the item fills")  (\TYPE PARAMETER NAME CELLS TYPE  (STRUCTURE  ((TOP.CELL  (CELL)
)  (BOTTOM.CELL  (CELL))  (LEFT.CELL  (CELL))  (RIGHT.CELL  (CELL)))) DEFAULT  (CELL.1 CELL.2 CELL.3 
CELL.4) COMMENT  
"A list of cells (TOP BOTTOM LEFT RIGHT) whose values are reflected by the window in the region")  (
\TYPE PARAMETER NAME HORIZONTAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
HORIZONTAL.MAXIMUM TYPE  (INTEGER) DEFAULT 10 COMMENT  
"The maximum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
VERTICAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the vertical direction")  (\TYPE PARAMETER NAME VERTICAL.MAXIMUM
 TYPE  (INTEGER) DEFAULT 10 COMMENT  "The maximum value to be indicated in the vertical direction")  (
\TYPE PARAMETER NAME WINDOW.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE 
COMMENT  "Operation for BITBLT for window area of region")  (\TYPE PARAMETER NAME WINDOW.TEXTURE TYPE 
 (SHADE) DEFAULT 0 COMMENT  "Texture for BITBLT for window area of region")  (\TYPE PARAMETER NAME 
MARGIN.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"Operation for BITBLT for margin portion of region")  (\TYPE PARAMETER NAME MARGIN.TEXTURE TYPE  (
SHADE) DEFAULT 43605 COMMENT  "Texture for BITBLT for margin portion of region")  (\TYPE PARAMETER 
NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The width of the border seperating the window and the margin")  (\TYPE PARAMETER NAME 
BORDER.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"The BITBLT operation for the border")  (\TYPE PARAMETER NAME BORDER.TEXTURE TYPE  (SHADE) DEFAULT 
65535 COMMENT  "Texture for the border seperating the window from the margin")  (\TYPE PARAMETER NAME 
OUTER.BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The thickness in screen points of the border")  (\TYPE PARAMETER NAME OUTER.BORDER.TEXTURE TYPE  (
SHADE) DEFAULT 65535 COMMENT  "The color of the border")) SUBITEM.SPECS  ((ITEM BORDER  (PLACEMENT 
PLACEMENT)  (THICKNESS OUTER.BORDER.THICKNESS)  (OPERATION  (QUOTE REPLACE))  (COLOR 
OUTER.BORDER.TEXTURE))  (ITEM LIGHT.BAR.2.DIMENSION  (PLACEMENT  (REGION.WITHIN.BORDER PLACEMENT 
BORDER.THICKNESS))  (CELLS CELLS)  (HORIZONTAL.MINIMUM HORIZONTAL.MINIMUM)  (HORIZONTAL.MAXIMUM 
HORIZONTAL.MAXIMUM)  (VERTICAL.MINIMUM VERTICAL.MINIMUM)  (VERTICAL.MAXIMUM VERTICAL.MAXIMUM)  (
WINDOW.OPERATION WINDOW.OPERATION)  (WINDOW.TEXTURE WINDOW.TEXTURE)  (MARGIN.OPERATION 
MARGIN.OPERATION)  (MARGIN.TEXTURE MARGIN.TEXTURE)  (BORDER.THICKNESS BORDER.THICKNESS)  (
BORDER.OPERATION BORDER.OPERATION)  (BORDER.TEXTURE BORDER.TEXTURE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE LIGHT.BAR.REGION.W/BKGD/BORDER 5)
(\TYPE ITEM.TYPE NAME LIGHT.BAR.REGION.W/BKGD/BORDER COMMENT  
"A two-dimensional light.bar whose region on the screen is affected by the value of 4 cells" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"The placement of the lower left corner")  (\TYPE PARAMETER NAME CELLS TYPE  (STRUCTURE  ((TOP.CELL  (
CELL))  (BOTTOM.CELL  (CELL))  (LEFT.CELL  (CELL))  (RIGHT.CELL  (CELL)))) DEFAULT  (CELL.1 CELL.2 
CELL.3 CELL.4) COMMENT  
"A list of cells (TOP BOTTOM LEFT RIGHT) whose values are reflected by the window in the region")  (
\TYPE PARAMETER NAME HORIZONTAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
HORIZONTAL.MAXIMUM TYPE  (INTEGER) DEFAULT 10 COMMENT  
"The maximum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
VERTICAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the vertical direction")  (\TYPE PARAMETER NAME VERTICAL.MAXIMUM
 TYPE  (INTEGER) DEFAULT 10 COMMENT  "The maximum value to be indicated in the vertical direction")  (
\TYPE PARAMETER NAME BACKGROUND.BITMAP TYPE  (BITMAP.NAME) DEFAULT EXAMPLE.BITMAP COMMENT  
"The background picture to be displayed")  (\TYPE PARAMETER NAME WINDOW.OPERATION TYPE  (ONEOF  (
REPLACE PAINT INVERT ERASE)) DEFAULT PAINT COMMENT  "Operation for BITBLT for window area of region") 
 (\TYPE PARAMETER NAME WINDOW.TEXTURE TYPE  (SHADE) DEFAULT 0 COMMENT  
"Texture for BITBLT for window area of region")  (\TYPE PARAMETER NAME MARGIN.OPERATION TYPE  (ONEOF  
(REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"Operation for BITBLT for margin portion of region")  (\TYPE PARAMETER NAME MARGIN.TEXTURE TYPE  (
SHADE) DEFAULT 65535 COMMENT  "Texture for BITBLT for margin portion of region")  (\TYPE PARAMETER 
NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The width of the border seperating the window and the margin")  (\TYPE PARAMETER NAME 
BORDER.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"The BITBLT operation for the border")  (\TYPE PARAMETER NAME BORDER.TEXTURE TYPE  (SHADE) DEFAULT 
65535 COMMENT  "Texture for the border seperating the window from the margin")  (\TYPE PARAMETER NAME 
OUTER.BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The thickness in screen points of the border")  (\TYPE PARAMETER NAME OUTER.BORDER.TEXTURE TYPE  (
SHADE) DEFAULT 65535 COMMENT  "The color of the border")) SUBITEM.SPECS  ((ITEM BORDER  (PLACEMENT  (
BORDER.AROUND.REGION  (create REGION LEFT ←  (CAR PLACEMENT) BOTTOM ←  (CDR PLACEMENT) WIDTH ←  (
BITMAP.WIDTH BACKGROUND.BITMAP) HEIGHT ←  (BITMAP.HEIGHT BACKGROUND.BITMAP)) OUTER.BORDER.THICKNESS)) 
 (THICKNESS OUTER.BORDER.THICKNESS)  (OPERATION  (QUOTE REPLACE))  (COLOR OUTER.BORDER.TEXTURE))  (
ITEM LIGHT.BAR.REGION.W/BKGD  (PLACEMENT PLACEMENT)  (CELLS CELLS)  (HORIZONTAL.MINIMUM 
HORIZONTAL.MINIMUM)  (HORIZONTAL.MAXIMUM HORIZONTAL.MAXIMUM)  (VERTICAL.MINIMUM VERTICAL.MINIMUM)  (
VERTICAL.MAXIMUM VERTICAL.MAXIMUM)  (BACKGROUND.BITMAP BACKGROUND.BITMAP)  (WINDOW.OPERATION 
WINDOW.OPERATION)  (WINDOW.TEXTURE WINDOW.TEXTURE)  (MARGIN.OPERATION MARGIN.OPERATION)  (
MARGIN.TEXTURE MARGIN.TEXTURE)  (BORDER.THICKNESS BORDER.THICKNESS)  (BORDER.OPERATION 
BORDER.OPERATION)  (BORDER.TEXTURE BORDER.TEXTURE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE PICTURE.VARIABLE.PLACEMENT.W/BORDER 5)
(\TYPE ITEM.TYPE NAME PICTURE.VARIABLE.PLACEMENT.W/BORDER COMMENT  
"A picture whose position can be moved about within a bordered region" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 100 100) COMMENT  
"The region which the item fills")  (\TYPE PARAMETER NAME CELLS TYPE  (STRUCTURE  ((
HORIZONTAL.POSITION  (CELL))  (VERTICAL.POSITION  (CELL)))) DEFAULT  (CELL.1 CELL.2) COMMENT  
"A pair of cells (HORIZONTAL VERTICAL) that determine the position of the picture on the background") 
 (\TYPE PARAMETER NAME HORIZONTAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
HORIZONTAL.MAXIMUM TYPE  (INTEGER) DEFAULT 10 COMMENT  
"The maximum value to be indicated in the horizontal direction")  (\TYPE PARAMETER NAME 
VERTICAL.MINIMUM TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The minimum value to be indicated in the vertical direction")  (\TYPE PARAMETER NAME VERTICAL.MAXIMUM
 TYPE  (INTEGER) DEFAULT 10 COMMENT  "The maximum value to be indicated in the vertical direction")  (
\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The picture to be move within the region")  (\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE 
PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "Operation for BITBLT for window area of region")  (
\TYPE PARAMETER NAME BACKGROUND.TEXTURE TYPE  (SHADE) DEFAULT 0 COMMENT  
"Texture for BITBLT for window area of region")  (\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")) SUBITEM.SPECS  ((ITEM 
BORDER  (PLACEMENT PLACEMENT)  (THICKNESS BORDER.THICKNESS)  (OPERATION  (QUOTE REPLACE))  (COLOR 
BORDER.COLOR))  (ITEM PICTURE.VARIABLE.PLACEMENT  (PLACEMENT  (REGION.WITHIN.BORDER PLACEMENT 
BORDER.THICKNESS))  (CELLS CELLS)  (HORIZONTAL.MINIMUM HORIZONTAL.MINIMUM)  (HORIZONTAL.MAXIMUM 
HORIZONTAL.MAXIMUM)  (VERTICAL.MINIMUM VERTICAL.MINIMUM)  (VERTICAL.MAXIMUM VERTICAL.MAXIMUM)  (
PICTURE PICTURE)  (OPERATION OPERATION)  (BACKGROUND.TEXTURE BACKGROUND.TEXTURE))) CLASSES  (COMPOSITE
))
(READ.ITEMTYPE SET.OF.INDICATORS 5)
(\TYPE ITEM.TYPE NAME SET.OF.INDICATORS COMMENT  "A set of indicators affected by the same cell" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"Offset for the whole bunch")  (\TYPE PARAMETER NAME INDICATORS TYPE  (LIST  (STRUCTURE  ((BITMAP  (
BITMAP.NAME))  (VALUE  (CONSTANT))))) DEFAULT  ((OFFPAGE.BUTTON.BITMAP VALUE.1)  (SIMPLE.BUTTON.BITMAP
 VALUE.2)  (EXTERNAL.BUTTON.BITMAP VALUE.3)) COMMENT  
"A list of bitmap/reference.value pairs for the indicators")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell whose value is reflected by the indicators")  (\TYPE PARAMETER NAME 
ALIGNMENT TYPE  (ONEOF  (CENTER LOWER.LEFT LOWER.RIGHT UPPER.LEFT UPPER.RIGHT)) DEFAULT LOWER.LEFT 
COMMENT  "The point of alignment for the indicators")  (\TYPE PARAMETER NAME INDICATOR.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (0 . 0) COMMENT  "The spacing between the indicators")  (\TYPE PARAMETER NAME 
ON-COLOR TYPE  (COLOR.NAME) DEFAULT BLACK COMMENT  "The figure color for the background picture")  (
\TYPE PARAMETER NAME OFF-COLOR TYPE  (COLOR.NAME) DEFAULT WHITE COMMENT  
"The ground color for the background picture")) SUBITEM.SPECS  ((FOREACH  (THIS.INDICATOR IN 
INDICATORS)  (I FROM 0) DO  (ITEM INDICATOR  (PLACEMENT  (PTRANSLATE  (SELECTQ ALIGNMENT  (CENTER  (
POSITION/PLUS PLACEMENT  (VECTOR/TIMES  (BITMAP/DIAGONAL  (FIND.BITMAP  (CAR THIS.INDICATOR)))  -.5)))
  (LOWER.LEFT PLACEMENT)  (LOWER.RIGHT  (POSITION/PLUS PLACEMENT  (NEW.POSITION  (MINUS  (BITMAP.WIDTH
  (CAR THIS.INDICATOR))) 0)))  (UPPER.LEFT  (POSITION/PLUS PLACEMENT  (NEW.POSITION 0  (MINUS  (
BITMAP.HEIGHT  (CAR THIS.INDICATOR))))))  (UPPER.RIGHT  (POSITION/PLUS PLACEMENT  (VECTOR/TIMES  (
BITMAP/DIAGONAL  (FIND.BITMAP  (CAR THIS.INDICATOR))) -1))) NIL)  (NEW.POSITION  (ITIMES I  (CAR 
INDICATOR.SPACING))  (ITIMES I  (CDR INDICATOR.SPACING)))))  (BITMAP  (CAR THIS.INDICATOR))  (ON-COLOR
 ON-COLOR)  (OFF-COLOR OFF-COLOR)  (CELL CELL)  (REFERENCE.VALUE  (CADR THIS.INDICATOR))))) CLASSES  (
COMPOSITE))
(COMPILE.INTERNAL.FNS.IF.NECESSARY)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (12340 12575 (CONVERT.ICONIC.CASCADE.INDICATOR.OFFSETS 12350 . 12573)) (13837 14218 (
ACTON.IF.THEN.ELSE 13847 . 14216)) (15150 15395 (ACTON.IMPLICATION.MULTIPLE.CELLS 15160 . 15393)))))
STOP