<> <> <> <> <> 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. <> <> <<>> <> <> <<>> <> <> <<>> <> <> <<>> <> <> <<>> <> <> <<>>