<> <> <> <> <<>> DIRECTORY Terminal USING [Virtual, ChannelValue, ColorValue]; ImagerColorMap: CEDAR DEFINITIONS ~ BEGIN OPEN Terminal; State: TYPE ~ REF StateRep; StateRep: TYPE ~ PRIVATE RECORD [next: State, first, count: CARDINAL]; MapEntry: TYPE ~ RECORD [mapIndex: ChannelValue, red, green, blue: ColorValue]; AnyChanges: PROC [since: State] RETURNS [BOOL] ~ INLINE {RETURN [since=NIL OR since.next#NIL]}; <> SetStandardColorMap: PROC [vt: Virtual, gamma: REAL _ 2.2]; SetStandardGrayMap: PROC [vt: Virtual, gamma: REAL _ 2.2]; SetGamma: PROC [vt: Virtual, gamma: REAL]; GetGamma: PROC [vt: Virtual] RETURNS [gamma: REAL]; ApplyGamma: PROC [v: REAL, gamma: REAL] RETURNS [ColorValue]; ApplyGammaInverse: PROC [colorValue: ColorValue, gamma: REAL] RETURNS [REAL]; StandardColorMapEntries: PROC [bitsPerPixel: [1..8]] RETURNS [LIST OF MapEntry]; LoadEntries: PROC [vt: Virtual, mapEntries: LIST OF MapEntry, gamma: REAL _ 2.2, b: ChannelValue _ 0, shared: BOOL _ TRUE]; <> <> MapProc: TYPE ~ PROC [a, b: ChannelValue _ 0, red, green, blue: ColorValue, shared: BOOL _ TRUE]; Change: PROC [vt: Virtual, action: PROC[set: MapProc]]; Shared: PROC [vt: Virtual, a, b: ChannelValue] RETURNS [BOOL]; GetChanges: PROC [vt: Virtual, since: State _ NIL, change: MapProc] RETURNS [State]; <> FullMapProc: TYPE ~ PROC [gun: Gun, in: ChannelValue, out: ColorValue]; Gun: TYPE ~ {red, green, blue}; ChangeFull: PROC [vt: Virtual, action: PROC[set: FullMapProc]]; GetFullChanges: PROC [vt: Virtual, since: State _ NIL, change: FullMapProc] RETURNS [State]; <> NotifierRep: TYPE ~ RECORD [proc: PROC [data: REF], data: REF]; Register: PROC [colorMapChanged: NotifierRep]; <> <<>> UnRegister: PROC [colorMapChanged: NotifierRep]; END.