<> <> <> <> <<>> <> <<>> DIRECTORY Atom USING [PropList], IIBox USING [Box, Rectangle], IIColor USING [Color, ColorOperator, ConstantColor, SampledColor, SpecialColor], IIFont USING [Font, XChar, XStringProc], IIPath USING [Outline, PathProc, Trajectory], IIPixel USING [PixelMap], IIPixelArray USING [PixelArray], IISample USING [SampleMap], IITransformation USING [ScanMode, Transformation], Rope USING [ROPE], SF USING [Vec, zeroVec], Vector2 USING [VEC]; II: CEDAR DEFINITIONS ~ BEGIN VEC: TYPE ~ Vector2.VEC; -- RECORD [x, y: REAL] zeroVEC: VEC ~ [0.0, 0.0]; Rectangle: TYPE ~ IIBox.Rectangle; -- RECORD [x, y, w, h: REAL] Transformation: TYPE ~ IITransformation.Transformation; PathProc: TYPE ~ IIPath.PathProc; Trajectory: TYPE ~ IIPath.Trajectory; Outline: TYPE ~ IIPath.Outline; PixelArray: TYPE ~ IIPixelArray.PixelArray; SampleMap: TYPE ~ IISample.SampleMap; PixelMap: TYPE ~ IIPixel.PixelMap; ScanMode: TYPE ~ IITransformation.ScanMode; defaultScanMode: ScanMode ~ [slow: down, fast: right]; Color: TYPE ~ IIColor.Color; ConstantColor: TYPE ~ IIColor.ConstantColor; SampledColor: TYPE ~ IIColor.SampledColor; SpecialColor: TYPE ~ IIColor.SpecialColor; ColorOperator: TYPE ~ IIColor.ColorOperator; Font: TYPE ~ IIFont.Font; XChar: TYPE ~ IIFont.XChar; XStringProc: TYPE ~ IIFont.XStringProc; ROPE: TYPE ~ Rope.ROPE; <> Context: TYPE ~ REF ContextRep; ContextRep: TYPE ~ RECORD [ class: REF ClassRep, -- operations for the context class state: REF StateRep, -- context state, if standard representation data: REF, -- instance data (class-dependent type) propList: Atom.PropList _ NIL -- instance property list ]; ClassRep: TYPE; -- IIPrivate.ClassRep StateRep: TYPE; -- IIState.StateRep Error: ERROR [error: ErrorDesc]; ErrorDesc: TYPE ~ RECORD [code: ATOM, explanation: ROPE]; <<>> <<>> GetClass: PROC [context: Context] RETURNS [ATOM]; <> PutProp: PROC [context: Context, key: REF, val: REF]; GetProp: PROC [context: Context, key: REF] RETURNS [val: REF]; <> <<>> DoSave: PROC [context: Context, action: PROC]; DoSaveAll: PROC [context: Context, action: PROC]; <> <> <> <<>> <> metersPerInch: REAL ~ 0.0254; metersPerPoint: REAL ~ 0.0003514598; metersPerMica: REAL ~ 0.00001; pointsPerInch: REAL ~ 72.27; pointsPerMica: REAL ~ 0.028452756; micasPerInch: REAL ~ 2540.0; micasPerPoint: REAL ~ 35.14598; inchesPerPoint: REAL ~ 0.013837; inchesPerMica: REAL ~ 0.00039370079; <> <<>> <<>> ConcatT: PROC [context: Context, m: Transformation]; <> <<>> ScaleT: PROC [context: Context, s: REAL]; <> <> <<>> Scale2T: PROC [context: Context, s: VEC]; <> <<>> RotateT: PROC [context: Context, a: REAL]; <> <> <<>> TranslateT: PROC [context: Context, t: VEC]; <> <<>> <<>> Move: PROC [context: Context]; <> <<>> Trans: PROC [context: Context]; <> <<>> SetXY: PROC [context: Context, p: VEC]; SetXYI: PROC [context: Context, x, y: INTEGER]; <> <<>> SetXYRel: PROC [context: Context, v: VEC]; SetXYRelI: PROC [context: Context, x, y: INTEGER]; <> SetXRel: PROC [context: Context, x: REAL]; SetXRelI: PROC [context: Context, x: INTEGER]; <> <<>> SetYRel: PROC [context: Context, y: REAL]; SetYRelI: PROC [context: Context, y: INTEGER]; <> <<>> <> FindFontScaled: PROC [name: ROPE, s: REAL] RETURNS [Font]; <> <<>> SetFont: PROC [context: Context, font: Font]; <> SetAmplifySpace: PROC [context: Context, amplifySpace: REAL]; <> Show: PROC [context: Context, string: XStringProc, xrel: BOOL _ FALSE]; <> <> ShowAndFixedXRel: PROC [context: Context, string: XStringProc, x: REAL]; <> ShowChar: PROC [context: Context, char: CHAR]; <> <<>> ShowXChar: PROC [context: Context, char: XChar]; <> <<>> ShowRope: PROC [context: Context, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, xrel: BOOL _ FALSE]; <> <<>> ShowText: PROC [context: Context, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, xrel: BOOL _ FALSE]; <> <<>> <<>> StartUnderline: PROC [context: Context]; <> <<>> MaskUnderline: PROC [context: Context, dy, h: REAL]; MaskUnderlineI: PROC [context: Context, dy, h: INTEGER]; <> <> <> <<>> CorrectMask: PROC [context: Context]; CorrectSpace: PROC [context: Context, v: VEC]; <> <> Space: PROC [context: Context, x: REAL]; SpaceI: PROC [context: Context, x: INTEGER]; <> <> <<>> SetCorrectMeasure: PROC [context: Context, v: VEC]; <> <<>> SetCorrectTolerance: PROC [context: Context, v: VEC]; <> <<>> SetCorrectShrink: PROC [context: Context, correctShrink: REAL]; <> <<>> <<>> Correct: PROC [context: Context, action: PROC]; <> <> <> <> <<>> DontCorrect: PROC [context: Context, action: PROC, saveCP: BOOL _ FALSE]; <> <> <> <> SetColor: PROC [context: Context, color: Color]; <> MakeGray: PROC [f: REAL] RETURNS [ConstantColor]; <> <<>> black: READONLY ConstantColor; -- MakeGray[1] white: READONLY ConstantColor; -- MakeGray[0] SetGray: PROC [context: Context, f: REAL]; <> <<>> SetSampledColor: PROC [context: Context, pa: PixelArray, m: Transformation _ NIL, colorOperator: ColorOperator]; <> <> <<>> SetSampledBlack: PROC [context: Context, pa: PixelArray, m: Transformation _ NIL, clear: BOOL _ FALSE]; <> <> <<>> DrawSampledColor: PROC [context: Context, pa: PixelArray, colorOperator: ColorOperator, m: Transformation _ NIL, position: VEC _ zeroVEC]; <> <> <> <<>> DrawPixels: PROC [context: Context, pixelMap: PixelMap, colorOperator: ColorOperator, referencePoint: SF.Vec _ SF.zeroVec, scanMode: ScanMode _ defaultScanMode, position: VEC _ zeroVEC]; <> <<>> DrawBitmap: PROC [context: Context, bitmap: SampleMap, referencePoint: SF.Vec _ SF.zeroVec, scanMode: ScanMode _ defaultScanMode, position: VEC _ zeroVEC]; <> <<>> <> MaskFill: PROC [context: Context, path: PathProc, oddWrap: BOOL _ FALSE]; <> <> <> <> <<>> MaskFillTrajectory: PROC [context: Context, trajectory: Trajectory, oddWrap: BOOL _ FALSE]; <> <<>> MaskFillOutline: PROC [context: Context, outline: Outline]; <> <<>> MaskRectangle: PROC [context: Context, r: Rectangle]; MaskRectangleI: PROC [context: Context, x, y, w, h: INTEGER]; <> <<>> Box: TYPE ~ IIBox.Box; -- RECORD [xmin, ymin, xmax, ymax: REAL] MaskBox: PROC [context: Context, box: Box]; <> <> <<>> SetStrokeWidth: PROC [context: Context, strokeWidth: REAL]; <> StrokeEnd: TYPE ~ {square, butt, round}; <> <> <> SetStrokeEnd: PROC [context: Context, strokeEnd: StrokeEnd]; <> StrokeJoint: TYPE ~ {miter, bevel, round}; <> <> <> SetStrokeJoint: PROC [context: Context, strokeJoint: StrokeJoint]; <> MaskStroke: PROC [context: Context, path: PathProc, closed: BOOL _ FALSE]; <> <> <> <> <<>> MaskStrokeTrajectory: PROC [context: Context, trajectory: Trajectory, closed: BOOL _ FALSE]; <> <<>> MaskVector: PROC [context: Context, p1, p2: VEC]; MaskVectorI: PROC [context: Context, x1, y1, x2, y2: INTEGER]; <> <<>> MaskDashedStroke: PROC [context: Context, path: PathProc, patternLen: NAT, pattern: PROC [NAT] RETURNS [REAL], offset, length: REAL]; <<>> MaskDashedStrokeTrajectory: PROC [context: Context, trajectory: Trajectory, patternLen: NAT, pattern: PROC [NAT] RETURNS [REAL], offset, length: REAL]; <<>> <<>> MaskPixel: PROC [context: Context, pa: PixelArray]; <> MaskBitmap: PROC [context: Context, bitmap: SampleMap, referencePoint: SF.Vec _ SF.zeroVec, scanMode: ScanMode _ defaultScanMode, position: VEC _ zeroVEC]; <> SetPriorityImportant: PROC [context: Context, priorityImportant: BOOL]; <> <<>> SetNoImage: PROC [context: Context, noImage: BOOL]; <> <<>> Clip: PROC [context: Context, path: PathProc, oddWrap, exclude: BOOL _ FALSE]; <> <> <> ClipOutline: PROC [context: Context, outline: Outline, exclude: BOOL _ FALSE]; <> ClipRectangle: PROC [context: Context, r: Rectangle, exclude: BOOL _ FALSE]; ClipRectangleI: PROC [context: Context, x, y, w, h: INTEGER, exclude: BOOL _ FALSE]; <> <> DoIfVisible: PROC [context: Context, r: Rectangle, action: PROC]; <> <<>> DoWithBuffer: PROC [context: Context, action: PROC, x, y, w, h: INTEGER, backgroundColor: Color _ NIL]; <> <> <<>> Object: TYPE ~ REF ObjectRep; ObjectRep: TYPE ~ RECORD [draw: PROC [self: Object, context: Context], clip: Rectangle, data: REF]; <> DrawObject: PROC [context: Context, object: Object, position: VEC _ zeroVEC, interactive: BOOL _ FALSE]; <> <> END.