Icons.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Edited by McGregor on August 16, 1982 11:19 am
Last Edited by: Maxwell, December 17, 1982 9:57 am
Doug Wyatt, March 28, 1985 2:37:54 pm PST
DIRECTORY
Imager USING [Context],
Rope USING [ROPE];
Icons: CEDAR DEFINITIONS
~ BEGIN
ROPE: TYPE ~ Rope.ROPE;
iconW: INTEGER ~ 64;
iconH: INTEGER ~ 64;
IconFlavor:
TYPE ~
MACHINE
DEPENDENT {
-- pre-defined icons
document(0),
dirtyDocument(1),
fileCabinet(2),
tool(3),
typescript(4),
private(177776B), -- will cause call of viewer paintProc to paint icon
unInit(177777B) -- flag for unitialised icon type
};
IconRef: TYPE ~ REF IconRep;
IconRep:
TYPE ~
MACHINE
DEPENDENT
RECORD [
bits: ARRAY [0..iconH*iconW/16) OF WORD, -- 64 x 64 bit pattern
label: BOOL ← FALSE, -- label icon with viewer name?
invertLabel: BOOL ← FALSE, -- label drawn with white bits if TRUE
filler: [0..16384) ← 0, -- unused
lx, ly, lw, lh: INTEGER ← 0, -- rectangle for label (from bottom left)
proc: DrawIconProc ← NIL -- proc to draw pattern
];
DrawIconProc:
TYPE ~
PROC [flavor: IconFlavor, context: Imager.Context,
x, y:
INTEGER ← 0, label:
ROPE ←
NIL];
DrawIcon: DrawIconProc;
Draw an icon in a context
NewIcon:
PROC [info: IconRef]
RETURNS [newFlavor: IconFlavor];
Create a new icon type
NewIconFromFile:
PROC [file:
ROPE, n:
CARDINAL]
RETURNS [newFlavor: IconFlavor];
Create a new icon type from the n'th icon read from the file
Icon File Format (for wizards/hackers). Icons must be packed into the file at two pages per icon, corresponding to a logical record type as follows:
IconFileFormat:
TYPE ~
MACHINE
DEPENDENT
RECORD [
bits: ARRAY [0..iconH*iconW/16) OF WORD ← ALL[0],
label: BOOL ← FALSE,
invertLabel: BOOL ← FALSE,
filler: [0..16384) ← 0, -- leftovers
lx, ly, lw, lh: INTEGER ← 0,
empty: ARRAY [0..251) OF WORD ← ALL[0] -- leftovers
];
END.