<> <> <> <> DIRECTORY ImagerPixelMap USING [PixelMap], ImagerPixelRow USING [PixelRow], ImagerTransformation USING [Transformation], Scaled USING [Value]; ImagerSampler: CEDAR DEFINITIONS ~ BEGIN PixelMap: TYPE ~ ImagerPixelMap.PixelMap; Transformation: TYPE ~ ImagerTransformation.Transformation; Pixel: TYPE ~ CARDINAL; PixelRow: TYPE ~ ImagerPixelRow.PixelRow; Sampler: TYPE ~ REF SamplerRep; SamplerRep: TYPE ~ RECORD [ m: Transformation, x, y: INTEGER, sPixels, fPixels: NAT, sStart, fStart: Scaled.Value, -- InverseTransform[m, [x+0.5, y+0.5]] MOD [sPixels, fPixels] sDelta, fDelta: Scaled.Value, -- InverseTransformVec[m, [0, 1]] sDeltaLine, fDeltaLine: Scaled.Value -- InverseTransformVec[m, [1, 0]] ]; CreateSampler: PROC [m: Transformation, x, y: INTEGER, sPixels, fPixels: NAT] RETURNS [sampler: Sampler]; SetSamplePosition: PROC [sampler: Sampler, x, y: INTEGER]; <> ObtainPointSamples: PROC [pixelRow: PixelRow, source: PixelMap, sampler: Sampler, multiplier: CARDINAL _ 1, lgScale: INTEGER _ 0]; <> <> <> <> ObtainInterpolatedSamples: PROC [pixelRow: PixelRow, source: PixelMap, sampler: Sampler, multiplier: CARDINAL _ 1, lgScale: INTEGER _ 0]; <> <> HalftoneLine: PROC [dest: PixelMap, pixels: PixelRow, thresholds: PixelRow, invertOutput: BOOLEAN _ FALSE, transparent: BOOLEAN _ FALSE]; <> <> DotScreen: PROC [r: REAL _ 0.5, sSize: NAT _ 16, fSize: NAT _ 16, maxPixelValue: CARDINAL] RETURNS [pixelMap: PixelMap]; <> ApplyTRC: PROC [thresholds: PixelMap, trc: PROC [x: REAL] RETURNS [y: REAL], maxPixelValue: CARDINAL]; <> <> <> <> <> Identity: PROC [x: REAL] RETURNS [y: REAL]; <> END.