-- Decompress.mesa
-- Copyright (C) Xerox Corporation 1984. All rights reserved.
-- last edited by: castillo 20-Dec-84 15:46:12
-- Defines Procedure types that can be used for decompression in cases
-- where maxSampleValue = 1 and the result is a series of scanlines of
-- [0..1] bits in contiguous memory, padded with 0's to the next doubleword
-- there will be a separate implementation for each flavor of compression
-- Decompression occurs at the time the samples vector is needed
-- i.e. MakeSampledBlack or MaskPixel
DIRECTORY
Environment USING [Block];
Decompress: DEFINITIONS =
BEGIN
DecompressFlavor: TYPE = -- the first 3 direct from the RES standard
{adaptive, ccitt, compressed, -- formerly IMG
-- those below non-standard and 'modified'
huffman, read};
DecompressInfo: TYPE = RECORD [
scanLength: NATURAL, -- number of pixels (in this case, bits) in scanline
flavor: DecompressFlavor,
private: LONG POINTER]; -- to impl's private data
DecompressHandle: TYPE = LONG POINTER TO DecompressInfo;
Error: ERROR [line: CARDINAL];
-- error while decompressing. The decompressor should free up
-- the resources allocated before raising this error.
Init: TYPE = PROCEDURE [v: Environment.Block] RETURNS [h: DecompressHandle];
-- v points to the data bytes in a sequenceLargeVector where bytesInInt = 2
-- and the vector may have been of a one of the compressed flavors
Done: TYPE = PROCEDURE [h: DecompressHandle];
NextLine: TYPE = PROCEDURE [h: DecompressHandle, out: LONG POINTER]
RETURNS [valid: BOOLEAN];
-- caller assures "out" points to space enough for one scanline
-- valid = TRUE up through last scan line
AdaptiveInit: Init;
AdaptiveNextLine: NextLine;
AdaptiveDone: Done;
CcittInit: Init;
CcittNextLine: NextLine;
CcittDone: Done;
CompressedInit: Init;
CompressedNextLine: NextLine;
CompressedDone: Done;
HuffmanInit: Init;
HuffmanNextLine: NextLine;
HuffmanDone: Done;
ReadInit: Init;
ReadNextLine: NextLine;
ReadDone: Done;
END.
LOG
5Nov84 - castillo.
Newlin 5-Nov-84 modify flavor names, add RETURNS to NextLine & add specific PROCS.
16Nov84 - castillo - changed Init parms, added Error.
20Dec84 - castillo - changed the LONG POINTER in Init for a Env.BLock.