<> <<>> <> <<>> <> <> <> DIRECTORY Scaled USING [Value]; newImagerBasic: CEDAR DEFINITIONS = BEGIN <<>> <> <<>> Pair: TYPE = RECORD [x, y: REAL]; IntPair: TYPE = RECORD [x, y: INTEGER]; Edge: TYPE = RECORD [a, b: Pair]; IntEdge: TYPE = RECORD [a, b: IntPair]; Rectangle: TYPE = RECORD [x, y, w, h: REAL]; IntRectangle: TYPE = RECORD [x, y, w, h: INTEGER]; nullBox: IntRectangle = [FIRST[INTEGER], FIRST[INTEGER], FIRST[INTEGER], FIRST[INTEGER]]; Bezier: TYPE = RECORD [b0, b1, b2, b3: Pair]; -- Bezier control points for a cubic curve <<>> <> <<>> TransformType: TYPE = {none, identity, rot90, rot180, rot270, mirrorX, mirrorY, mirror45Deg, mirror135Deg, hard}; Transformation: TYPE = RECORD [ -- a transformation matrix a, b, c, d, e, f: REAL, -- matrix elements type: TransformType -- identifies special matrix forms ]; <> <> <> <> <<>> <> <<>> Visibility: TYPE = {visible, partlyVisible, invisible}; <<>> <> <<>> PathMapType: TYPE = PROC[ data: REF, move: PROC[p: Pair], line: PROC[p: Pair], curve: PROC[p1, p2, p3: Pair], conic: PROC[p1, p2: Pair, r: REAL] ]; PathClosure: TYPE = RECORD[map: PathMapType, data: REF]; <> <<>> StrokeEnds: TYPE = {butt, square, round}; <<>> <> <<>> Color: TYPE = REF; CIEColor: TYPE = REF CIEColorRep; CIEColorRep: TYPE = RECORD [x, y, Y: CARDINAL]; <> SampledColor: TYPE = REF SampledColorRep; SampledColorRep: TYPE = RECORD [ transparent: BOOLEAN, -- are 0 samples white (false) or transparent (true)? pa: PixelArray, -- the array of samples m: Transformation, -- transforms from pa to device coordinates colorMap: ATOM -- maps samples into colors ]; <<>> <> <<>> PixelArray: TYPE = REF PixelArrayRep; PixelArrayRep: TYPE = RECORD [ xPixels, yPixels: INT, -- dimensions of the array, in pixels maxSampleValue: INT, -- the range of sample values is [0..maxSampleValue] samplesPerPixel: INT, -- number of samples for each pixel m: Transformation, -- transformation to client space (see Interpress, section 4.6) get: PROC [ self: PixelArray, buffer: PixelBuffer, <> nSamples: NAT, <> layer: INT, <> xStart, yStart: Scaled.Value, <> xDelta, yDelta: Scaled.Value <> ], data: REF ANY <> ]; PixelBuffer: TYPE = REF PixelBufferRep; PixelBufferRep: TYPE = RECORD [ SEQUENCE maxLength: NAT OF CARDINAL ]; END.