<<>> <> <> <> <> DIRECTORY ImagerSample USING [Function, maxCount, nullFunction, Sample, SampleBuffer, SampleMap], ImagerTransformation USING [Transformation], Prop USING [PropList], SF USING [Box, BoxGenerator, Vec, zeroVec]; ImagerPixel: CEDAR DEFINITIONS ~ BEGIN Function: TYPE ~ ImagerSample.Function; maxCount: NAT ~ ImagerSample.maxCount; nullFunction: Function ~ ImagerSample.nullFunction; Sample: TYPE ~ ImagerSample.Sample; SampleBuffer: TYPE ~ ImagerSample.SampleBuffer; SampleMap: TYPE ~ ImagerSample.SampleMap; Transformation: TYPE ~ ImagerTransformation.Transformation; <> PixelProc: TYPE ~ PROC [i: NAT] RETURNS [Sample]; PixelBuffer: TYPE ~ REF PixelBufferRep; PixelBufferRep: TYPE ~ RECORD [ length: NAT, sampleBuffers: SEQUENCE samplesPerPixel: NAT OF SampleBuffer ]; NewPixels: PROC [samplesPerPixel: NAT, length: NAT, scratch: PixelBuffer ¬ NIL] RETURNS [PixelBuffer]; ObtainScratchPixels: PROC [samplesPerPixel: NAT, length: NAT] RETURNS [PixelBuffer]; <<>> ReleaseScratchPixels: PROC [pixels: PixelBuffer]; DoWithScratchPixels: PROC [samplesPerPixel: NAT, length: NAT, action: PROC [PixelBuffer]]; PixelMap: TYPE ~ REF PixelMapRep; PixelMapRep: TYPE ~ RECORD [ propList: Prop.PropList ¬ NIL, box: SF.Box, sampleMaps: SEQUENCE samplesPerPixel: NAT OF SampleMap ]; NewPixelMap: PROC [samplesPerPixel: NAT, box: SF.Box, maxSample: PixelProc] RETURNS [PixelMap]; MakePixelMap: PROC [s0, s1, s2, s3, s4: SampleMap ¬ NIL] RETURNS [PixelMap]; <> GetPixels: PROC [self: PixelMap, initIndex: SF.Vec ¬ SF.zeroVec, delta: SF.Vec ¬ [s: 0, f: 1], pixels: PixelBuffer, start: NAT ¬ 0, count: NAT ¬ maxCount]; <> <> <> <> PutPixels: PROC [self: PixelMap, initIndex: SF.Vec ¬ SF.zeroVec, delta: SF.Vec ¬ [s: 0, f: 1], pixels: PixelBuffer, start: NAT ¬ 0, count: NAT ¬ maxCount, function: Function ¬ nullFunction]; <> <> <> <> ResampleAction: TYPE ~ PROC [pixels: PixelBuffer, min: SF.Vec]; <> Resample: PROC [self: PixelMap, m: Transformation, interpolate: BOOL, boxes: SF.BoxGenerator, bounds: SF.Box, action: ResampleAction]; <> <> <> END.