ImagerOps: CEDAR DEFINITIONS = BEGIN State: TYPE = REF StateRep; StateRep: TYPE = RECORD[ correctMX, correctMY: REAL, -- line measure correctMaskCount: INT, -- tally CORRECTMASK calls correctMaskX, correctMaskY: REAL, -- space to be taken up by CORRECTMASK calls correctSumX, correctSumY: REAL, -- tally adjustable space from CORRECTSPACE calls correctSpaceX, correctSpaceY: REAL, -- space to be taken up by CORRECTSPACE calls correctcpx, correctcpy: REAL, -- current position at start of CORRECT correctTargetX, correctTargetY: REAL, -- where corrected text should end up showVec: REF, -- IP.Vector color: Color, priorityImportant: INT, mediumXSize, mediumYSize: REAL, -- in meters fieldXMin, fieldYMin, fieldXMax, fieldYMax: REAL, -- in meters noImage: INT, strokeWidth: REAL, strokeEnd: INT, underlineStart: REAL, amplifySpace: REAL, correctPass: INT, correctShrink: REAL, -- allowable space shrink correctTX, correctTY: REAL -- line tolerance ]; initialStateRep: StateRep = [ correctMX: 0, correctMY: 0, correctMaskCount: 0, correctMaskX: 0, correctMaskY: 0, correctSumX: 0, correctSumY: 0, correctSpaceX: 0, correctSpaceY: 0, correctcpx: 0, correctcpy: 0, correctTargetX: 0, correctTargetY: 0, showVec: NIL, color: NIL, priorityImportant: 0, mediumXSize: 0, mediumYSize: 0, fieldXMin: 0, fieldYMin: 0, fieldXMax: 0, fieldYMax: 0, noImage: 0, strokeWidth: 0, strokeEnd: 0, underlineStart: 0, amplifySpace: 1.0, correctPass: 0, correctShrink: 0.5, correctTX: 0, correctTY: 0 ]; GetState: PROC[context: Context] RETURNS[State]; GetT: PROC [context: Context] RETURNS [Transformation]; SetT: PROC [context: Context, m: Transformation]; GetViewCP: PROC [context: Context] RETURNS [Pair]; SetViewCP: PROC [context: Context, cp: Pair]; GetCP: PROC [context: Context] RETURNS [Pair]; GetCPRounded: PROC [context: Context] RETURNS [Pair]; GetColor: PROC [context: Context] RETURNS [Color]; ClassRep: TYPE = RECORD [ deviceType: ATOM, Init: PROC [context: Context, name: ROPE, bounds: IntRectangle], GetViewCP: PROC[context: Context] RETURNS[Pair], SetViewCP: PROC[context: Context, value: Pair], GetT: PROC[context: Context] RETURNS[Transformation], SetT: PROC[context: Context, value: Transformation], GetClipper: PROC[context: Context] RETURNS[Clipper], SetClipper: PROC[context: Context, value: Clipper], GetColor: PROC[context: Context] RETURNS[Color], SetColor: PROC[context: Context, value: Color], ConcatT: PROC [context: Context, transformation: Transformation], TranslateT: PROC [context: Context, dx, dy: REAL], MaskFill: PROC [context: Context, path: PathClosure], MaskStroke: PROC [context: Context, path: PathClosure, width: REAL, strokeEnds: StrokeEnds, closed: BOOL], MaskPixel: PROC [context: Context, pixelArray: PixelArray], MaskRectangle: PROC [context: Context, area: Rectangle], MaskIntRectangle: PROC [context: Context, area: IntRectangle], MaskThinStroke: PROC [context: Context, path: PathClosure, closed: BOOL], MaskBits: PROC [context: Context, base: LONG POINTER, raster: CARDINAL, tile: IntRectangle, area: IntRectangle], MaskChar: PROC [context: Context, font: FONT, char: CHAR], MaskCharacters: PROC [context: Context, font: FONT, characters: REF, start: INT, length: INT], GetCP: PROC [context: Context] RETURNS [Pair], SetCP: PROC [context: Context, p: Pair, relative: BOOL], DoSave: PROC [context: Context, action: PROC, all: BOOL], ClipOutline: PROC [context: Context, outline: PathClosure, exclude: BOOL], ClipRectangle: PROC [context: Context, outline: Rectangle, exclude: BOOL], TestRectangle: PROC [context: Context, area: Rectangle] RETURNS [Visibility], DoWithoutClipping: PROC [context: Context, bounds: IntRectangle, callBack: PROC[Context]], Reset: PROC [context: Context] _ NIL, SetView: PROC [context: Context, box: IntRectangle, halftoneOrigin: IntPair] _ NIL, ClipView: PROC [context: Context, box: IntRectangle, exclude: BOOL] _ NIL, GetSurfaceBounds: PROC [context: Context] RETURNS [IntRectangle] _ NIL, GetViewBounds: PROC [context: Context] RETURNS [IntRectangle] _ NIL, MoveSurfaceRectangle: PROC [context: Context, source: IntRectangle, dest: IntPair] RETURNS [BOOL] _ NIL, SetColorInvert: PROC [context: Context] _ NIL, DrawBitmap: PROC [context: Context, base: LONG POINTER, raster: CARDINAL, area: IntRectangle] _ NIL, SpecialOp: PROC [context: Context, op: ATOM, data: REF] RETURNS [BOOL] _ NIL ]; RegisterDevice: PROC[class: REF ClassRep]; END. ŠnewImagerOps.mesa persistent variables for DCScpx, DCScpy, use GetViewCP/SetViewCP non-persistent variables for T, use GetT/SetT for clipOutline, use GetClipper/SetClipper Returns a reference to the above state variables of the context Get and Set the client-to-view transformation [[what about sampled colors, which bind a transformation to device coords?]] Class record definition. ʽ˜Jšœ™J™Jšœ Ïkœ ˜Jšœ˜J˜Jšœœœ ˜šœ œœ˜™Jšœ+™+JšœœÏc˜+Jšœœž ž˜1Jšœœž ž˜NJšœœž ž˜QJšœœž ž˜QJšœœž ˜EJšœ œž%˜KJ˜—™Jšœ™Jšœ*™*Jšœ œž ˜Jšœ ˜ Jšœœ˜Jšœœž ˜,Jšœ,œž ˜>Jšœ œ˜ Jšœ œ˜Jšœ œ˜Jšœœ˜Jšœœ˜Jšœ œ˜Jšœœž˜.Jšœœž˜,—J˜J˜—šœ˜Jšœ˜Jšœ˜Jšœ!˜!Jšœ˜Jšœ#˜#Jšœ˜Jšœ%˜%Jšœ œ˜ Jšœœ˜ Jšœ˜Jšœ˜Jšœ7˜7Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜J˜J˜—šÏnœœœ˜0J™@J™—JšŸœœœ˜7šŸœœ'˜1Jšœ-™-J™—JšŸ œœœ˜2JšŸ œœ˜-J˜JšŸœœœ˜.JšŸ œœœ˜5J˜šŸœœœ ˜2J™LJ˜—˜J˜—™J˜—šœ œœ˜Jšœ œ˜JšŸœœœ˜@J˜JšŸ œœœ˜0JšŸ œœ ˜/JšŸœœœ˜5JšŸœœ*˜4JšŸ œœœ ˜4JšŸ œœ#˜3JšŸœœœ˜0JšŸœœ!˜/J˜JšŸœœ4˜AJšŸ œœœ˜2J˜JšŸœœ'˜5JšŸ œœ.œ"œ˜jJšŸ œœ,˜;JšŸ œœ%˜8JšŸœœ(˜>JšŸœœ/œ˜IJš Ÿœœœœ œ*˜pJšŸœœœœ˜:Jš Ÿœœœœ œ œ˜^J˜JšŸœœœ˜.JšŸœœ'œ˜8J˜JšŸœœœœ˜9J˜JšŸ œœ3œ˜JJšŸ œœ1œ˜JJšŸ œœ%œ˜MJšŸœœ4œ ˜ZJ˜JšŸœœœ˜%JšŸœœBœ˜SJšŸœœ0œœ˜JJšŸœœœœ˜GJšŸ œœœœ˜DJš Ÿœœ9œœœ˜hJ˜JšŸœœœ˜.Jš Ÿ œœœœ œœ˜dJš Ÿ œœœœœœ˜LJšœ˜J˜—JšŸœœœ ˜*J˜Jšœ˜—…—D‹