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: BOOLFALSE, -- label icon with viewer name?
invertLabel: BOOLFALSE, -- 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: ROPENIL];
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 WORDALL[0],
label: BOOLFALSE,
invertLabel: BOOLFALSE,
filler: [0..16384) ← 0, -- leftovers
lx, ly, lw, lh: INTEGER ← 0,
empty: ARRAY [0..251) OF WORDALL[0] -- leftovers
];
END.