-- CGBandFormat.mesa Cedar 3.2 version -- Last edit by Ken Pier, July 16, 1982 3:01 pm --NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE --these definitions must ABSOLUTELY MIRROR the corresponding ones in the --engine software, MesaBandFormat.mesa. --MAKE NO CHANGES TO THE ONE WITHOUT CHANGING THE OTHER !!!! DIRECTORY CGBandDevice USING [BandDevice]; CGBandFormat: DEFINITIONS = { -- 8.5 * 11 * 384 * 384 = 13,787,136 (bits on Hornet page) -- 5 * 5 * 5000 * 5000 = 625,000,000 (bits on reticle) Marker: TYPE = INTEGER ← 23456; --supposed unique bit string Bit: TYPE = BOOLEAN; Type: TYPE = {all0, all1, brick, bits, fontcache, herald, end};--in three bit field Flags: TYPE = MACHINE DEPENDENT RECORD [type: Type, rect: BOOLEAN];--four bit field BandX: TYPE = [0..7777B]; -- twelve bit field adjoins Flags --N.B.: ALL object types must start with the marker, then flags, then band ObjectRef: TYPE = LONG POINTER TO Object; Object: TYPE = MACHINE DEPENDENT RECORD [ mark: Marker, flags: Flags, band: BandX, yStart: CARDINAL ← 0, height: CARDINAL ← 0, -- if rect=TRUE, only runs[0] is given -- if rect=FALSE, runs[0..height) are given runs: SEQUENCE COMPUTED CARDINAL OF Run -- if type=bits, bits follow -- if type=brick, brick follows ]; objectSize: CARDINAL = SIZE[Object]; -- VERIFY THIS IS SANS runs RunRef: TYPE = LONG POINTER TO Run; Run: TYPE = MACHINE DEPENDENT RECORD [ xmin: CARDINAL, -- left end of scanline xmax: CARDINAL -- right end of scanline ]; runSize: CARDINAL = SIZE[Run]; HeraldRef: TYPE = LONG POINTER TO HeraldObject; HeraldObject: TYPE = MACHINE DEPENDENT RECORD [ mark: Marker, flags: Flags ← [type: herald, rect: FALSE], band: BandX ← 7777B, unused: [0..1777b], device: CGBandDevice.BandDevice, bandCount: CARDINAL, --number of bands for this device bandHeight: CARDINAL, --height of each band in scanlines bandWidth: CARDINAL --width of each band in words ]; heraldObjectSize: CARDINAL = SIZE[HeraldObject]; EndRef: TYPE = LONG POINTER TO EndObject; EndObject: TYPE = MACHINE DEPENDENT RECORD [ mark: Marker, flags: Flags ← [type: end, rect: FALSE], band: BandX ← 7777B, yStart: CARDINAL ← 177777B, height: CARDINAL ← 177777B ]; endObjectSize: CARDINAL = SIZE[EndObject]; --thresholded brick stuff TBrickRef: TYPE = LONG POINTER TO TBrickRep; TBrickRep: TYPE = RECORD [ L,p: CARDINAL, --length, height of brick D: INTEGER, --displacement hx, hy: CARDINAL ← 0, --now unused, retained for compatibility color: CARDINAL, --that this brick represents brickSize: CARDINAL, --actual size of brick sequence brick: PACKED SEQUENCE max: NAT OF Bit ]; tBrickSize: CARDINAL = SIZE[TBrickRep]; LineRef: TYPE = LONG POINTER TO Line; Line: TYPE = RECORD[PACKED SEQUENCE COMPUTED CARDINAL OF Bit]; }.--CGBandFormat --created by Pier, 2/15/82 --change Marker, band field; remove skipCount, run.Count, tail of EndObj, 3/14/82 --converted Refs from REF to LONG POINTER, 3/30/82 --removed hx, hy from TBrick July 13, 1982