<> <> <> <> <<>> <> <> <> <<>> DIRECTORY Rope USING [ROPE], ImagerPixel USING [PixelBuffer], ImagerSample USING [Sample], UnixTapeOps USING [TapeHandle, Density], TapesCommon USING [FileHandleList]; OptronicsTape: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; TapeHandle: TYPE ~ UnixTapeOps.TapeHandle; TapeError: SIGNAL [reason: ErrorDesc]; ErrorDesc: TYPE ~ RECORD [code: ATOM, explanation: Rope.ROPE]; <> FileSpec: TYPE = REF FileSpecRep; FileSpecRep: TYPE = RECORD[ pixelsPerInch: PixelsPerInch, nLines, nPixels: NAT, rgbInterleaved: BOOLEAN _ FALSE, maxD: REAL _ 2.0 --suggested values: 2.0 for gray, 1.5 for color ]; FileSpecList: TYPE = LIST OF FileSpec; ColorType: TYPE = {rgb, gray, singleColor}; --linear in density PixelsPerInch: TYPE = {ppi63, ppi127, ppi254, ppi508, ppi1015, ppi2030}; <> <<625, 1.25K, 2.5K, 5K, 10K, 20K>> <> <> <> <> <> <<];>> <> <<>> WriteTape: PROC [tapeHandle: TapeHandle, header: ROPE, files: FileSpecList] RETURNS [TapesCommon.FileHandleList]; <> <> <> AISToTape: PROC [aisRootName: ROPE, color: BOOLEAN _ TRUE, pixelsPerInch: NAT _ 254]; <> <> ReadHeader: PROC [tapeHandle: TapeHandle] RETURNS [ROPE]; <> <<>> FileToAIS: PROC [tapeHandle: TapeHandle, fileNumber: NAT, colorType: ColorType, aisRootName: ROPE, reduce: NAT _ 4]; <> <> <> <> TRCTable: TYPE = REF TRCTableRec; TRCTableRec: TYPE = RECORD[length: NAT, values: SEQUENCE maxLength: NAT OF ImagerSample.Sample]; MakeRGBToDensity: PUBLIC PROC[maxSampleOut, maxSampleIn: NAT _ 255, maxD: REAL _ 2.0] RETURNS[TRCTable]; MakeDensityToRGB: PUBLIC PROC[maxSampleOut, maxSampleIn: NAT _ 255, maxD: REAL _ 2.0] RETURNS[TRCTable]; <> << >> RGBToDensity: PROC [raster: ImagerPixel.PixelBuffer, rgbToDensity: TRCTable]; DensityToRGB: PROC[raster: ImagerPixel.PixelBuffer, densityToRGB: TRCTable]; <> <> <> <> SizeOfFile: PROC [fileSpec: FileSpec, density: UnixTapeOps.Density _ GCR6250] RETURNS [sizeInFeet: REAL]; <> <<>> SizeOfHeader: PROC [density: UnixTapeOps.Density _ GCR6250] RETURNS [sizeInFeet: REAL]; <> <<>> SizeOfList: PROC [files: FileSpecList, density: UnixTapeOps.Density _ GCR6250] RETURNS [sizeInFeet: REAL]; <> END.