DIRECTORY Rope, PDFileFormat; PDFileWriter: CEDAR DEFINITIONS = BEGIN PDState: TYPE = REF PDStateRec; PDStateRec: TYPE; DeviceCode: TYPE = PDFileFormat.DeviceCode; Toner: TYPE = PDFileFormat.Toner; LoadReference: TYPE = NAT; LoadReferenceRep: TYPE = RECORD [ assignedLoadAddress: INT _ -1, sSize, fSize: CARDINAL, data: SELECT tag: * FROM samples => [], tile => [], runGroup => [], ENDCASE ]; TFlag: TYPE = {opaque, transparent}; Create: PROC [fileName: Rope.ROPE, deviceCode: DeviceCode, sResolution, fResolution, imageSSize, imageFSize: CARDINAL, nColors: NAT _ 1, bandSSize: CARDINAL _ 16, copies: CARDINAL _ 1, leftOverMode: BOOLEAN _ TRUE, maxLoadWords: INT _ 60000] RETURNS [pdState: PDState]; SetPriorityImportant: PROC [pdState: PDState, priorityImportant: BOOLEAN] RETURNS [previousValue: BOOLEAN]; DeliverRunGroupProc: TYPE = PROC [CaptureRunProc]; CaptureRunProc: TYPE = PROC [sMin, fMin, fSize: CARDINAL]; DeliverSampleArrayProc: TYPE = PROC [CaptureScanLineProc]; CaptureScanLineProc: TYPE = PROC [LONG POINTER]; GetBounds: PROC [pdState: PDState] RETURNS [sMax, fMax: CARDINAL]; DoForEachToner: PROC [pdState: PDState, proc: PROC[Toner]]; SetColorInk: PROC [pdState: PDState, toner: Toner]; SetColorClear: PROC [pdState: PDState, toner: Toner]; SetColorTile: PROC [pdState: PDState, toner: Toner, tileRef: LoadReference, tFlag: TFlag _ opaque]; MaskRectangle: PROC [pdState: PDState, sMin, fMin: CARDINAL, sSize, fSize: CARDINAL]; MaskTrapezoid: PROC [pdState: PDState, sMin, sSize: CARDINAL, fMin, fSize: CARDINAL, fMinLast, fSizeLast: CARDINAL]; MaskSamplesRef: PROC [pdState: PDState, samplesRef: LoadReference, sMin, fMin: CARDINAL]; MaskSamples: PROC [pdState: PDState, sMin, fMin: CARDINAL, sSize, fSize: CARDINAL, deliverProc: DeliverSampleArrayProc]; MaskRunGroupRef: PROC [pdState: PDState, runGroupRef: LoadReference, sMin, fMin: CARDINAL]; MaskRunGroup: PROC [pdState: PDState, deliverProc: DeliverRunGroupProc]; ColorSamples: PROC [pdState: PDState, toner: Toner, sMin, fMin: CARDINAL, sSize, fSize: CARDINAL, deliverProc: DeliverSampleArrayProc, tFlag: TFlag _ opaque]; RemainingLoadSize: PROC [pdState: PDState] RETURNS [words: INT]; LoadRunGroup: PROC [pdState: PDState, deliverProc: DeliverRunGroupProc] RETURNS [loadReference: LoadReference]; LoadContiguousSampleArray: PROC [pdState: PDState, sSize, fSize: CARDINAL, bitsPtr: LONG POINTER] RETURNS [loadReference: LoadReference]; LoadContiguousColorTile: PROC [pdState: PDState, phase: CARDINAL, sMin, fMin: CARDINAL, sSize, fSize: CARDINAL, bitsPtr: LONG POINTER] RETURNS [loadReference: LoadReference]; EndPage: PROC [pdState: PDState]; FlushPage: PROC [pdState: PDState]; Close: PROC [pdState: PDState]; END. lPDFileWriter.mesa Michael Plass, April 29, 1983 11:00 am This interface provides a way of creating a pd (printer-dependent) image file. Creating a new PD file. priorityImportant is initially FALSE Callback mechanisms for passing variable length items. The procedures PutColorSamples, PutMaskSamples, LoadSampleArray, PutMaskRunGroup, and LoadRunGroup require a variable amount of data, perhaps a very large amount. To maintain flexibility, a callback mechanism is used to pass the data into these routines. A PDFileWriter routine takes a delivery routine as a parameter; when it needs the data, it calls the delivery routine, passing it a capture routine to call with each unit of data. Note that it is inadvisable for the delivery routine to make any use of the PDState while it has control. Extracting information from the handle. Calls the proc for each toner being used. Setting the current color. Imaging operators. Load management. Tells the amount of load the writer can be sure is available. Terminators. In case the client needs to remove a partially-written page. Note that changes to the load are not flushed. ส>˜Jšœ™J™&J™NIunitšฯk œ˜šœ˜'Jšœ œœ ˜Jšœ œ˜Jšœ œ˜+Jšœœ˜!Jšœœœ˜šœœœ˜!Jšœœ˜Jšœœ˜J˜šœ˜J˜J˜ J˜Jš˜—Jšœ˜—Jšœœ˜$head3šœ™KšฯnœœœLœ œœœœœœ œ˜šžœœ'œ˜IJšœœ˜!Jšœ™$——™6JšœŸ™ŸKšžœœœ˜2Jšžœœœœ˜:Kšžœœœ˜:Jš žœœœœœ˜0—™'Kšž œœœœ˜Bšžœœœ ˜;J™)——šœ™Kšž œœ"˜3Kšž œœ"˜5Kšž œœQ˜c—šœ™Kšž œœ œœ˜UKš ž œœ!œœœ˜tKšžœœ;œ˜YKš ž œœœœœ'˜xKšžœœ<œ˜[Kšž œœ6˜HKš ž œœ&œœœ>˜ž—šœ™šžœœœ œ˜@J™=—Kšž œœ6œ ˜oKš žœœ"œ œœœ ˜‰Kšžœœœœœ œœœ ˜ฎ—™ Kšžœœ˜!šž œœ˜#J™l—Kšžœœ˜—Kšœ˜——…— ˆ2