ImagerInterpressPreamble.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Doug Wyatt, October 18, 1985 6:21:01 pm PDT
Michael Plass, April 8, 1986 12:33:42 pm PST
Rick Beach, June 17, 1986 4:33:07 pm PDT
Imager clients can use this interface to create Interpress masters.
DIRECTORY
Imager USING [Color, ColorOperator, Context, Font, PixelArray, Transformation],
IO USING [STREAM],
Rope USING [ROPE];
ImagerInterpressPreamble: CEDAR DEFINITIONS
~ BEGIN
Ref: TYPE ~ REF Rep;
Rep: TYPE;
Create: PROC [fileName: Rope.ROPE, header: Rope.ROPENIL] RETURNS [Ref];
Creates a file with the given name.
If header=NIL, a header of "Interpress/Xerox/3.0 " is supplied.
CreateFromStream: PROC [stream: IO.STREAM, header: Rope.ROPE] RETURNS [Ref];
Returns a handle aimed at stream; header is inserted verbatim at beginning.
DeclareFont: PROC [self: Ref, font: Imager.Font];
Includes a Font in the preamble.
DeclareColor: PROC [self: Ref, color: Imager.Color];
Includes a Color in the preamble.
DeclarePixelArray: PROC [self: Ref, pixelArray: Imager.PixelArray];
Includes a PixelArray in the preamble.
DeclareColorOperator: PROC [self: Ref, colorOperator: Imager.ColorOperator];
Includes a ColorOperator in the preamble.
DeclareIdentifier: PROC [self: Ref, identifier: ATOM];
Includes an identifier in the preamble.
PushInt: PROC [self: Ref, n: INT];
Pushes an integer on the stack created in the preamble.
VectorProc: TYPE ~ PROC [
putIdentifier: PROC [ATOM],
putString: PROC [Rope.ROPE],
putInt: PROC [INT],
putReal: PROC [REAL],
putTransformation: PROC [Imager.Transformation],
putVector: PROC [vecProc: PROC],
putImageOp: PROC [action: PROC [Imager.Context]]
];
PushVector: PROC [self: Ref, vectorProc: VectorProc];
Pushes a vector on the stack created in the preamble.
vectorProc should not call PushVector, but should use its putVector proc to create any nested vectors.
PushPixelArray: PROC [self: Ref, pa: Imager.PixelArray];
Pushes a pixel array on the stack created in the preamble.
PushColorOperator: PROC [self: Ref, op: Imager.ColorOperator];
Pushes a color operator on the stack created in the preamble.
DoPage: PROC [self: Ref, action: PROC [Imager.Context], scale: REAL ← 1.0];
Calls action to generate the next page.
Close: PROC [self: Ref];
Finishes the master and closes the underlying stream.
Finish: PROC [self: Ref];
Finishes the master without closing the underlying stream.
The following provide hooks for getting a context that behaves in the way that ImagerPress and ImagerViewer behave:
GetContext: PROC [self: Ref] RETURNS [Imager.Context];
This procedure creates a context into which the imager calls do their actions. You must call NewPage with last TRUE for the last page and before the Master is closed.
NewPage: PROC [self: Ref, context: Imager.Context, last: BOOL];
This causes a new page to be written into the master. It must be called with last TRUE on the last page of the master.
END.