<> <> <> <> DIRECTORY IISample USING [Function, maxCount, nullFunction, Sample, SampleBuffer, SampleMap], IITransformation USING [Transformation], SF USING [Box, BoxGenerator, Vec, zeroVec]; IIPixel: CEDAR DEFINITIONS ~ BEGIN Function: TYPE ~ IISample.Function; maxCount: NAT ~ IISample.maxCount; nullFunction: Function ~ IISample.nullFunction; Sample: TYPE ~ IISample.Sample; SampleBuffer: TYPE ~ IISample.SampleBuffer; SampleMap: TYPE ~ IISample.SampleMap; Transformation: TYPE ~ IITransformation.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 [ 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.