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. VPSGraphics.mesa Copyright Σ 1986, 1987 by Xerox Corporation. All rights reserved. Doug Wyatt, August 10, 1987 3:19:12 pm PDT Types Graphics state operators save graphics state restore graphics state restore to bottommost graphics state reset graphics state parameters set line width return current line width set shape of ends for stroke return current line cap set shape of corners for stroke return current line join set miter length limit return current miter limit set dash pattern for stroking return current dash pattern set flatness tolerance return current flatness set color to gray value from 0 (black) to 1 (white) return current gray set color given hue, saturation, brightness return current color hue, saturation, brightness set color given red, green, blue return current color red, green, blue set halftone screen return current halftone screen set transfer function return current transfer function Coordinate system and matrix operators return an identity matrix define translation by t define scaling by s define rotation by angle degrees form product of two matrices form inverse of a matrix transform point p by matrix transform distance d by matrix inverse transform point p by matrix inverse transform distance d by matrix return device default matrix return CTM replace CTM by matrix replace CTM by matrix x CTM Path construction operators initialize current path to be empty return current point coordinates set current point to p relative MoveTo append straight line to p relative LineTo append counterclockwise or clockwise arc append tangent arc append Bezier cubic section relative CurveTo connect subpath back to its starting point convert curves to sequences of straight lines reverse direction of current path compute outline of stroked path append character outline to current path set current path to clipping path return bounding box of current path enumerate current path set clip path to device default establish new clipping path Painting operators paint current page white fill current path with current color draw line along current path render sampled image onto current page render mask onto current page Device setup and output operators output current page install frame buffer device install null device Character and font operators transform a font width of string in current font register a font dictionary return font specified by key set font dictionary return current font dictionary print characters of string on page add a to width of each char while showing string add c to width of specified char while showing string combined effects of ashow and widthshow execute action between characters shown Font cache operators return cache status and parameters declare cached character metrics declare uncached character metrics set max bytes in cached character Κ ”˜codešœ™KšœB™BK™*—K˜šΟk ˜ Kšœ˜Kšœœœ˜—K˜KšΟn œœ œ˜%head™Kšœ œœ ˜Iunitšœœ œ˜Mšœœœ œ˜!Mšœœœ ˜Kšœ œœœ˜4—šœ™šžœœ˜Kšœ™K™—šžœœ˜Kšœ™K™—šž œœ˜ Kšœ$™$K™—šž œœ˜!K™K™—šž œœœ˜2K™K™—šžœœœœ˜4K™K™—šœ œ˜&K˜—šž œœ!˜1K™K™—šžœœœ ˜5K™K™—šœ œ˜'K˜—šž œœ#˜4K™K™—šžœœœ ˜7K™K™—šž œœœ˜4K™K™—šžœœœœ˜5K™K™—š œœœ œœ˜4K˜—šžœœ˜(K™K™—šž œœœ˜/K™K™—šžœœœ˜,K™K™—šž œœœœ˜/K™K™—šžœœœ˜(K™3K™—šž œœœœ˜/K™K™—šœ œœœ˜.K˜—šž œœ#˜4K™+K™—šžœœœ ˜7K™0K™—šœ œœœ˜1K˜—šž œœ#˜4Kšœ ™ K™—šžœœœ ˜7Kšœ%™%K™—š œœœœ œœ˜>K˜—šž œœ˜.Kšœ™K™—šž œœœ ˜3Kšœ™K™—šœ œœœ˜'K˜—šž œœ#˜4Kšœ™K™—šžœœœ ˜7Kšœ ™ K™——™&šž œœœ ˜4Kšœ™K™—šž œœœœ ˜:Kšœ™K™—šžœœœœ ˜6Kšœ™K™—šžœœ œœ ˜