<> <> <<>> <> <> DIRECTORY ImagerBasic; ImagerPrivate: CEDAR DEFINITIONS = BEGIN <> <> ImagingSpace: TYPE = { client, viewer, device }; Transformation: TYPE = ImagerBasic.Transformation; Context: TYPE = REF ContextRep; -- Holds the imager state ContextRep: TYPE = RECORD [ currentColor: ImagerBasic.Color, currentFont: REF, currentIntPosition: ImagerBasic.IntPair, -- CP kept in device space currentPosition: ImagerBasic.Pair, -- For floating point types -- ********* Transformations ************ clientTransform: Transformation, viewerTransform: Transformation, deviceTransform: Transformation, compositeTransform: Transformation, integerTranslation: ImagerBasic.IntPair, -- used only if the compositeTransform not hard -- ***************** Clipping *********** clientClipper: ClipperRecord, viewerClipper: ClipperRecord, deviceClipper: ClipperRecord, clipper: ClipperRecord, -- composite clipper noClipArmed, noClip: BOOLEAN _ FALSE, data: REF ANY -- Interpretation of this depends on the procs ]; <> ClipperType: TYPE = {none, rectangle, path}; ClipperRecord: TYPE = RECORD [ xMin, xMax, yMin, yMax: INTEGER, -- use "path" if Client clipper is outside integer range type: ClipperType, clipper: Clipper -- used if type is "path" ]; Clipper: TYPE = REF ClipperRep; ClipperRep: TYPE = RECORD [ xMin, xMax, yMin, yMax: REAL, paths: LIST OF RECORD [exclude: BOOLEAN, path: ImagerBasic.Path] ]; END.