<> <> <> DIRECTORY PS, Vector2 USING [VEC]; PSGraphics: CEDAR DEFINITIONS ~ BEGIN <> Graphics: TYPE ~ PS.Graphics; VEC: TYPE ~ Vector2.VEC; Box: TYPE ~ RECORD [ll, ur: VEC]; Matrix: TYPE ~ REF MatrixRep; MatrixRep: TYPE ~ RECORD [a, b, c, d, tx, ty: REAL]; <> GSave: PROC [g: Graphics]; <> <<>> GRestore: PROC [g: Graphics]; <> <<>> GRestoreAll: PROC [g: Graphics]; <> <<>> InitGraphics: PROC [g: Graphics]; <> <<>> SetLineWidth: PROC [g: Graphics, lineWidth: REAL]; <> <<>> CurrentLineWidth: PROC [g: Graphics] RETURNS [REAL]; <> <<>> LineCap: TYPE ~ {butt, round, square}; SetLineCap: PROC [g: Graphics, lineCap: LineCap]; <> <<>> CurrentLineCap: PROC [g: Graphics] RETURNS [LineCap]; <> <<>> LineJoin: TYPE ~ {miter, round, bevel}; SetLineJoin: PROC [g: Graphics, lineJoin: LineJoin]; <> <<>> CurrentLineJoin: PROC [g: Graphics] RETURNS [LineJoin]; <> <<>> SetMiterLimit: PROC [g: Graphics, miterLimit: REAL]; <> <<>> CurrentMiterLimit: PROC [g: Graphics] RETURNS [REAL]; <> <<>> Dash: TYPE ~ RECORD [array: PS.Array, offset: REAL]; SetDash: PROC [g: Graphics, dash: Dash]; <> <<>> CurrentDash: PROC [g: Graphics] RETURNS [Dash]; <> <<>> SetFlat: PROC [g: Graphics, flatness: REAL]; <> <<>> CurrentFlat: PROC [g: Graphics] RETURNS [REAL]; <> <<>> SetGray: PROC [g: Graphics, gray: REAL]; <> <<>> CurrentGray: PROC [g: Graphics] RETURNS [REAL]; <> <<>> HSBColor: TYPE ~ RECORD [hue, sat, brt: REAL]; SetHSBColor: PROC [g: Graphics, hsbColor: HSBColor]; <> <<>> CurrentHSBColor: PROC [g: Graphics] RETURNS [HSBColor]; <> <<>> RGBColor: TYPE ~ RECORD [red, green, blue: REAL]; SetRGBColor: PROC [g: Graphics, rgbColor: RGBColor]; <> <<>> CurrentRGBColor: PROC [g: Graphics] RETURNS [RGBColor]; <> <<>> Screen: TYPE ~ RECORD [freq: REAL, angle: REAL, proc: PS.Any]; SetScreen: PROC [g: Graphics, screen: Screen]; <> <<>> CurrentScreen: PROC [g: Graphics] RETURNS [Screen]; <> <<>> Transfer: TYPE ~ RECORD [proc: PS.Any]; SetTransfer: PROC [g: Graphics, transfer: Transfer]; <> <<>> CurrentTransfer: PROC [g: Graphics] RETURNS [Transfer]; <> <<>> <> IdentMatrix: PROC [result: Matrix] RETURNS [Matrix]; <> <<>> Translate: PROC [t: VEC, result: Matrix] RETURNS [Matrix]; <> <<>> Scale: PROC [s: VEC, result: Matrix] RETURNS [Matrix]; <> <<>> Rotate: PROC [angle: REAL, result: Matrix] RETURNS [Matrix]; <> <<>> ConcatMatrix: PROC [matrix1, matrix2: Matrix, result: Matrix] RETURNS [Matrix]; <
> <<>> InvertMatrix: PROC [matrix: Matrix, result: Matrix] RETURNS [Matrix]; <> <<>> Transform: PROC [p: VEC, matrix: Matrix] RETURNS [VEC]; <> <<>> DTransform: PROC [d: VEC, matrix: Matrix] RETURNS [VEC]; <> <<>> ITransform: PROC [p: VEC, matrix: Matrix] RETURNS [VEC]; <> <<>> IDTransform: PROC [d: VEC, matrix: Matrix] RETURNS [VEC]; <> <<>> DefaultMatrix: PROC [g: Graphics, result: Matrix] RETURNS [Matrix]; <> <<>> CurrentMatrix: PROC [g: Graphics, result: Matrix] RETURNS [Matrix]; <> <<>> SetMatrix: PROC [g: Graphics, matrix: Matrix]; <> <<>> Concat: PROC [g: Graphics, matrix: Matrix]; <> <<>> <> NewPath: PROC [g: Graphics]; <> <<>> CurrentPoint: PROC [g: Graphics] RETURNS [VEC]; <> <<>> MoveTo: PROC [g: Graphics, p: VEC]; <> <<>> RMoveTo: PROC [g: Graphics, d: VEC]; <> <<>> LineTo: PROC [g: Graphics, p: VEC]; <> <<>> RLineTo: PROC [g: Graphics, d: VEC]; <> <<>> ArcSense: TYPE ~ {counterclockwise, clockwise}; Arc: PROC [g: Graphics, p: VEC, r: REAL, ang1, ang2: REAL, sense: ArcSense]; <> <<>> ArcTo: PROC [g: Graphics, p1, p2: VEC, r: REAL] RETURNS [t1, t2: VEC]; <> <<>> CurveTo: PROC [g: Graphics, p1, p2, p3: VEC]; <> <<>> RCurveTo: PROC [g: Graphics, d1, d2, d3: VEC]; <> <<>> ClosePath: PROC [g: Graphics]; <> <<>> FlattenPath: PROC [g: Graphics]; <> <<>> ReversePath: PROC [g: Graphics]; <> <<>> StrokePath: PROC [g: Graphics]; <> <<>> CharPath: PROC [g: Graphics, string: PS.String, bool: BOOL]; <> <<>> ClipPath: PROC [g: Graphics]; <> <<>> PathBBox: PROC [g: Graphics] RETURNS [Box]; <> MoveAction: TYPE ~ PROC [p: VEC]; LineAction: TYPE ~ PROC [p: VEC]; CurveAction: TYPE ~ PROC [p1, p2, p3: VEC]; CloseAction: TYPE ~ PROC []; PathForAll: PROC [g: Graphics, move: MoveAction, line: LineAction, curve: CurveAction, close: CloseAction]; <> <<>> InitClip: PROC [g: Graphics]; <> <<>> Clip: PROC [g: Graphics, eo: BOOL _ FALSE]; <> <<>> <> ErasePage: PROC [g: Graphics]; <> <<>> Fill: PROC [g: Graphics, eo: BOOL _ FALSE]; <> <<>> Stroke: PROC [g: Graphics]; <> <<>> Image: PROC [g: Graphics, width, height: INT, bitsPerSample: INT, matrix: Matrix, stringProc: PROC RETURNS [PS.String]]; <> <<>> ImageMask: PROC [g: Graphics, width, height: INT, invert: BOOL, matrix: Matrix, stringProc: PROC RETURNS [PS.String]]; <> <<>> <> CopyPage: PROC [g: Graphics]; <> <<>> FrameDevice: PROC [g: Graphics, matrix: Matrix, width, height: INT, proc: PS.Any]; <> <<>> NullDevice: PROC [g: Graphics]; <> <<>> <> MakeFont: PROC [font: PS.Dict, matrix: Matrix] RETURNS [PS.Dict]; <> <<>> StringWidth: PROC [g: Graphics, string: PS.String] RETURNS [VEC]; <> <<>> DefineFont: PROC [g: Graphics, key: PS.Any, font: PS.Dict] RETURNS [PS.Dict]; <> <<>> FindFont: PROC [g: Graphics, key: PS.Any] RETURNS [PS.Dict]; <> <<>> SetFont: PROC [g: Graphics, font: PS.Dict]; <> <<>> CurrentFont: PROC [g: Graphics] RETURNS [PS.Dict]; <> <<>> Show: PROC [g: Graphics, string: PS.String]; <> <<>> AShow: PROC [g: Graphics, a: VEC, string: PS.String]; <> <<>> WidthShow: PROC [g: Graphics, c: VEC, char: CHAR, string: PS.String]; <> <<>> AWidthShow: PROC [g: Graphics, c: VEC, char: CHAR, a: VEC, string: PS.String]; <> <<>> KShow: PROC [g: Graphics, action: PROC [CHAR, CHAR], string: PS.String]; <> <<>> <<>> <> CacheInfo: TYPE ~ RECORD [bsize, bmax, msize, mmax, csize, cmax, blimit: INT]; CacheStatus: PROC [g: Graphics] RETURNS [CacheInfo]; <> <<>> SetCacheDevice: PROC [g: Graphics, w: VEC, box: Box]; <> <<>> SetCharWidth: PROC [g: Graphics, w: VEC]; <> <<>> SetCacheLimit: PROC [g: Graphics, blimit: INT]; <> <<>> <<>> END.