DIRECTORY IPEncodingOut USING [Handle, AppendInteger, AppendOp, AppendRational, AppendReal], IPVariables USING [FrameVariable, ImagerVariable, StrokeEnd], Rope USING [MaxLen, ROPE]; IPOperatorOut: CEDAR DEFINITIONS IMPORTS IPEncodingOut, Rope = BEGIN Handle: TYPE = RECORD[ip: IPEncodingOut.Handle]; Number: TYPE = RECORD [SELECT type: NumberType FROM integer => [value: INT], rational => [i, j: INT], real => [value: REAL], ENDCASE]; NumberType: TYPE = {integer, rational, real}; int: PROCEDURE [v: INT] RETURNS [Number] = INLINE {RETURN [[integer[v]]]}; real: PROCEDURE [v: REAL] RETURNS [Number] = INLINE {RETURN [[real[v]]]}; rational: PROCEDURE [i, j: INT] RETURNS [Number] = INLINE {RETURN [[rational[i, j]]]}; BeginMaster: PROCEDURE [name: Rope.ROPE] RETURNS [ip: Handle]; EndMaster: PROCEDURE [ip: Handle]; LeftBrace, BeginPreamble, BeginPage, BeginBody: PROCEDURE [ip: Handle] = INLINE {ip.AppendOp[beginBody];}; RightBrace, EndPreamble, EndPage, EndBody: PROCEDURE [ip: Handle] = INLINE {ip.AppendOp[endBody];}; Get: PROCEDURE [ip: Handle, n: INT]; MakeVec: PROCEDURE [ip: Handle, n: INT]; MakeVecLU: PROCEDURE [ip: Handle, l, u : INT]; FGet: PROCEDURE [ip: Handle, n: IPVariables.FrameVariable]; FSet: PROCEDURE [ip: Handle, x: Number, n: IPVariables.FrameVariable]; BeginMakeSimpleCO: PROCEDURE [ip: Handle]; EndMakeSimpleCO: PROCEDURE [ip: Handle]; BeginDoSaveSimpleBody: PROCEDURE [ip: Handle]; EndDoSaveSimpleBody: PROCEDURE [ip: Handle]; BeginCorrect: PROCEDURE [ip: Handle]; EndCorrect: PROCEDURE [ip: Handle]; BeginIf: PROCEDURE [ip: Handle]; EndIf: PROCEDURE [ip: Handle]; BeginIfElse: PROCEDURE [ip: Handle]; EndIfElse: PROCEDURE [ip: Handle]; BeginIfCopy: PROCEDURE [ip: Handle]; EndIfCopy: PROCEDURE [ip: Handle]; IGet: PROCEDURE [ip: Handle, n: IPVariables.ImagerVariable]; ISet: PROCEDURE [ip: Handle, x: Number, n: IPVariables.ImagerVariable]; SetStrokeWidth: PROCEDURE [ip: Handle, width: Number]; SetStrokeEnd: PROCEDURE [ip: Handle, end: IPVariables.StrokeEnd]; SetAmplifySpace: PROCEDURE [ip: Handle, amplify: Number]; SetPriorityImportant: PUBLIC PROCEDURE [ip: Handle, on: BOOLEAN _ FALSE]; Translate: PROCEDURE [ip: Handle, x, y: Number, concatT: BOOLEAN _ TRUE]; Rotate: PROCEDURE [ip: Handle, alpha: Number, concatT: BOOLEAN _ TRUE]; Scale: PROCEDURE [ip: Handle, s: Number, concatT: BOOLEAN _ TRUE]; Scale2: PROCEDURE [ip: Handle, sx, sy: Number, concatT: BOOLEAN _ TRUE]; Show: PROCEDURE [ip: Handle, text: Rope.ROPE _ NIL, start: INT _ 0, len: INT _ Rope.MaxLen]; SetXY: PROCEDURE [ip: Handle, x, y: Number]; SetXYRel: PROCEDURE [ip: Handle, x, y: Number]; SetXRel: PROCEDURE [ip: Handle, x: Number]; SetYRel: PROCEDURE [ip: Handle, y: Number]; PushCP: PROCEDURE [ip: Handle]; -- save DCScpx and DCScpy on stack PopCP: PROCEDURE [ip: Handle]; -- restore DCScpx and DCScpy from stack SetGray: PROCEDURE [ip: Handle, f: Number]; MoveTo: PROCEDURE [ip: Handle, x, y: Number]; LineTo: PROCEDURE [ip: Handle, x, y: Number]; LineToX: PROCEDURE [ip: Handle, x: Number]; LineToY: PROCEDURE [ip: Handle, y: Number]; MaskRectangle: PROCEDURE [ip: Handle, x, y, w, h: Number]; StartUnderline: PROCEDURE [ip: Handle] = INLINE {ip.AppendOp[startunderline];}; MaskUnderline: PROCEDURE [ip: Handle, dy, h: Number]; MaskVector: PROCEDURE [ip: Handle, x1, y1, x2, y2: Number]; SetFont: PROCEDURE [ip: Handle, font: IPVariables.FrameVariable]; CorrectSpace: PROCEDURE [ip: Handle, x, y: Number]; SetCorrectMeasure: PROCEDURE [ip: Handle, x, y: Number]; SetCorrectTolerance: PROCEDURE [ip: Handle, x, y: Number]; Space: PROCEDURE [ip: Handle, x: Number]; PushAndDisableCorrection: PROCEDURE [ip: Handle]; PopAndRestoreCorrection: PROCEDURE [ip: Handle]; SetUpFont: PROCEDURE [ip: Handle, fontNumber: IPVariables.FrameVariable, name: Rope.ROPE, scale: Number, rotation: Number _ int[0], putInFrame: BOOLEAN _ TRUE]; AppendHierarchicalName: PROCEDURE [ip: Handle, name: Rope.ROPE, start: INT _ 0, len: INT _ Rope.MaxLen]; AppendNumber: PROCEDURE [ip: Handle, v: Number] = INLINE { WITH v SELECT FROM integer => ip.AppendInteger[value]; rational => ip.AppendRational[i, j]; real => ip.AppendReal[value]; ENDCASE; }; NumberIsZero: PROCEDURE [n: Number] RETURNS [BOOLEAN]; CurveTo: PROCEDURE [ip: Handle, x1, y1, x2, y2, x3, y3: Number]; Error: ERROR [errorCode: ErrorCode]; ErrorCode: PUBLIC TYPE = {FileNotAvailable}; END. IPOperatorOut.mesa Last edited by Andy Shore, January 30, 1983 5:18 pm Last edited by Doug Wyatt, March 2, 1983 10:59 am This module provides the Interpress 2.0 Operator Interface (see Introduction to Interpress chapter 7) For many cases, the user must appeal to the lower-level Literal Interface on which this is based. IPEncodingOut is the literal interface. Master Creation opens file stream and writes header and BEGIN ERRORS: Error[FileNotAvailable]; writes END and closes stream Body Builders (2.5.4) Vectors (2.4.3) Frames (2.4.4) Body Operators (2.4.5, 2.4.7, 4.10) Imager State (4.2) Transformations (4.4) Current Position (4.5) Color (4.7) Masks (4.8) Character Operators (4.9) Corrected Masks (4.10) Other Nice Functions change id1/id2/... to [id1 id2 ...] n MAKEVEC Full Interpress Extensions Change Log Created by Shore; August 24, 1982 10:18 am Changed by Shore; September 16, 1982 2:05 pm Changed procedures to INLINE where possible Changed by Shore; September 24, 1982 2:37 pm made changes suggested by Sproull Changed by Shore; November 11, 1982 2:33 pm change to Cedar.Style and added node styles Changed by Shore; January 19, 1983 3:48 pm changed to CEDAR, Interpress 2.0, and new node styles Changed by Wyatt; March 2, 1983 10:59 am added CurveTo Κ0– "Cedar" style˜headšœ™JšΟc3™3Jš1™1—IbodyšΠbc!ž ™eš8žœ ™ŠunitšΟk ˜ JšœŸœ?˜RJšœ Ÿœ,˜=JšœŸœ Ÿœ˜——šœŸœŸ ˜ JšŸœŸ˜#J˜JšœŸœŸœ˜0J˜šœŸœŸœŸœŸ˜3JšœŸœ˜JšœŸœ˜JšœŸœ˜JšŸœ˜ —J˜Jšœ Ÿœ˜-Mš ΟbœŸ œŸœŸœ ŸœŸœ˜JMš  œŸ œŸœŸœ ŸœŸœ˜IMš  œŸ œŸœŸœ ŸœŸœ˜Vhead2š™šΟn œŸ œ ŸœŸœ˜>Jš-™-Jš ™ —š‘ œŸ œ˜"Jš™——š™Mš‘.œŸ œŸœ˜jMš‘)œŸ œŸœ˜c—š™Mš‘œŸ œŸœ˜$Mš‘œŸ œŸœ˜(Mš‘ œŸ œŸœ˜.—š™Mš‘œŸ œ,˜;Mš‘œŸ œ7˜F—š#™#Mš‘œŸ œ˜*Mš‘œŸ œ˜(Mš‘œŸ œ˜.Mš‘œŸ œ˜,Mš‘ œŸ œ˜%Mš‘ œŸ œ˜#Mš‘œŸ œ˜ Mš‘œŸ œ˜Mš‘ œŸ œ˜$Mš‘ œŸ œ˜"Mš‘ œŸ œ˜$Mš‘ œŸ œ˜"—š™Mš‘œŸ œ-˜