(* Last edited on 1999-03-11 00:42:05 by stolfi *) INTERFACE Interval3x3Window; IMPORT PGMImageFilter; TYPE T = ARRAY [-1..+1] OF ARRAY [-1..+1] OF Interval; Interval = PGMImageFilter.Interval; LineBuffer = PGMImageFilter.IntervalBuffer; INT = INTEGER; LONG = LONGREAL; NAT = CARDINAL; PROCEDURE Get( x, y: INT; READONLY imBuf: LineBuffer; NX, NY: NAT; VAR p: T; noPixel: Interval := Interval{0.0d0, 1.0d0}; ); (* Extracts from "imBuf" the 3x3 sub-array centered on pixel "[x,y]". Fills non-existing elements with "noPixel". *) PROCEDURE Normalize(VAR b: T; r: Interval := Interval{0.0d0, 1.0d0}); (* Applies a shift and scale to all pixels in "b" so that they span the given range "r". *) END Interval3x3Window.