<> <> <> <<>> <> <<>> DIRECTORY ImagerSample USING [Sample, SampleBuffer]; ImagerBrick: CEDAR DEFINITIONS ~ BEGIN Sample: TYPE ~ ImagerSample.Sample; SampleBuffer: TYPE ~ ImagerSample.SampleBuffer; Brick: TYPE ~ REF BrickRep; BrickRep: TYPE ~ RECORD [ sSize, fSize: NAT, -- "slow" and "fast" dimensions phase: NAT, -- phase shift for successive brick "layers", IN[0..fSize) u, v: NAT, -- values matrix was derived from samples: SEQUENCE size: NAT OF REAL ]; <<>> FilterProc: TYPE ~ PROC [x, y: REAL] RETURNS [REAL]; <> <<>> DotScreen: FilterProc; LineScreen: FilterProc; <> NewBrick: PROC [freq, angle: REAL, filter: FilterProc] RETURNS [Brick]; <> <> <<>> NewSquareBrick: PROC [size: NAT, p, q: INTEGER, pModulation, qModulation: REAL] RETURNS [Brick]; < 0, a line screen if one of these is zero, otherwise something inbetween a dot and line screen. The screen angle will be arctan (p/q), and the period will be size/sqrt(p*p+q*q).>> <<>> GetElement: PROC [brick: Brick, s, f: NAT] RETURNS [REAL]; <> <<>> ThresholdsFromBrick: PROC [brick: Brick, max: Sample, scratch: SampleBuffer _ NIL] RETURNS [SampleBuffer]; <> <<>> END.