-- AISFormat.mesa -- Last changed by Maureen Stone, 8-Oct-81 11:31:05 -- Last changed by Doug Wyatt, 13-Aug-81 15:41:02 -- Definition of AIS (Array of Intensity Samples) file format AISFormat: DEFINITIONS = { aisPassword: INTEGER = -31574; aisWordsPerPage: CARDINAL = 1024; unused: INTEGER = -1; -- for unused values in Placement and Photometry parts Header: TYPE = MACHINE DEPENDENT RECORD [ password: INTEGER, attributeLength: CARDINAL]; PartType: TYPE = MACHINE DEPENDENT {nil(0), raster(1), placement(2), photometry(3), comment(4), (77B)}; PartHeader: TYPE = MACHINE DEPENDENT RECORD[type: PartType, length: [0..1777B]]; CodingType: TYPE = MACHINE DEPENDENT {uca(1)}; RasterPart: TYPE = MACHINE DEPENDENT RECORD [ part(0): PartHeader, scanCount(1): CARDINAL, scanLength(2): CARDINAL, scanDir(3): CARDINAL, samplesPerPixel(4): CARDINAL, coding(5:0..79): SELECT codingType(5): CodingType FROM uca => [ -- Uncompressed array bitsPerSample(6): CARDINAL, wordsPerScanLine(7): CARDINAL, scanLinesPerBlock(8): INTEGER, -- -1 means no blocking paddingPerBlock(9): CARDINAL -- in words ], ENDCASE ]; PlacementPart: TYPE = MACHINE DEPENDENT RECORD [ part: PartHeader, xLeft: INTEGER, yBottom: INTEGER, xWidth: INTEGER, yHeight: INTEGER ]; PhotometryPart: TYPE = MACHINE DEPENDENT RECORD [ part: PartHeader, signal: SignalType, sense: Sense, scaleType: ScaleType, pointA: Point, pointB: Point, pointC: Point, spotType: SpotType, spotWidth: INTEGER, -- in units of 100*(width in pixels) spotLength: INTEGER, -- in units of 100*(length in scanlines) sampleMin: INTEGER, sampleMax: INTEGER, histogramLength: INTEGER, -- followed by Histogram if histogramLength is not 0 or -1 histogram: SEQUENCE COMPUTED CARDINAL OF INTEGER ]; SignalType: TYPE = MACHINE DEPENDENT {blackAndWhite(0), red(1), blue(2), green(3), cyan(4), magenta(5), yellow(6), x(7), y(8), RGB(100), CMY(101), CMYB(102), Yxy(103), comments(177776B), undefined(177777B)}; Sense: TYPE = MACHINE DEPENDENT {largerIsLighter(0), largerIsDarker(1), undefined(177777B)}; ScaleType: TYPE = MACHINE DEPENDENT {reflectance(1), density(2), comments(177776B), undefined(177777B)}; Point: TYPE = MACHINE DEPENDENT RECORD [sample: INTEGER, level: INTEGER]; SpotType: TYPE = MACHINE DEPENDENT {rectangular(1), circular(2), comments(177776B), undefined(177777B)}; CommentPart: TYPE = MACHINE DEPENDENT RECORD [ part: PartHeader, chars: PACKED SEQUENCE COMPUTED CARDINAL OF CHARACTER ]; -- Comment string is chars[1..LOOPHOLE[chars[0],CARDINAL]] }.