DIRECTORY PDFileFormat USING [DeviceCode, Toner], Rope USING [ROPE]; 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, bandSSize: CARDINAL _ 16, copies: CARDINAL _ 1, leftOverMode: BOOLEAN _ TRUE, maxLoadWords: INT _ 60000] RETURNS [pdState: PDState]; SetPriorityImportant: PROC [pdState: PDState, priorityImportant: BOOLEAN] RETURNS [previousValue: BOOLEAN]; TonerSet: TYPE ~ PACKED ARRAY Toner OF InitiallyFalse; InitiallyFalse: TYPE ~ BOOLEAN _ FALSE; StartImage: PROC [pdState: PDState, toners: TonerSet _ [black: TRUE], feed, strip: BOOLEAN _ TRUE]; 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]; SetColorOff: 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]; NewPriorityLevel: PROC [pdState: PDState, toner: Toner]; 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. ÒPDFileWriter.mesa Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. Michael Plass, April 9, 1984 9:57:08 am PST Doug Wyatt, March 7, 1985 2:33:08 pm PST This interface provides a way of creating a pd (printer-dependent) image file. Creating a new PD file. priorityImportant is initially FALSE This interface may be used to create color PD files either one layer at a time, or all layers simultaneously. The toners parameter specifies which layers are to be created in the current pass; feed applies to the first of the layers, and strip to the last. The call to StartImage may be omitted if the default parameters suffice. Callback mechanisms for passing variable length items. The procedures MaskRunGroup, LoadRunGroup, MaskSamples, and ColorSamples 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. Masking commands have no effect for the specified toner until a new color is set for it. 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. Changes: Michael Plass, April 9, 1984: Added StartImage and SetColorOff. nColors removed from Create. Ê‘˜codešœ™Kšœ Ïmœ7™BK™+K™(—K™K™NK˜šÏk ˜ Kšœ žœ˜'Kšœžœžœ˜—K˜KšÐbl œžœž ˜Kšœž˜K˜Kšœ žœžœ ˜Kšœ žœ˜Kšœ žœ˜+Kšœžœ˜!Kšœžœžœ˜šœžœžœ˜!Kšœžœ˜Kšœžœ˜K˜šžœž˜K˜K˜ K˜Kšž˜—Kšœ˜K˜—šœžœ˜$K™—šœ™K˜šÏnœžœžœLžœ žœžœžœžœžœ žœ˜ûK˜—š œžœ'žœ˜IKšžœžœ˜!Kšœž™$K˜—Kš œ žœžœžœžœ˜6Kšœžœžœžœ˜'š   œžœ/žœžœžœ˜cKšœsÏbœI¡œ)¡œW™ËK˜——™6šœ…™…K˜—š œžœžœ˜2K˜—š œžœžœžœ˜:K˜—š œžœžœ˜:K˜—š  œžœžœžœžœ˜0K˜——™'K˜š  œžœžœžœ˜BK˜—š œžœžœ ˜;K™)K™——šœ™K˜š  œžœ"˜3K˜—š  œžœ"˜5K˜—š  œžœ"˜3K™XK˜—š  œžœQ˜cK˜——šœ™K˜š  œžœ žœžœ˜UK˜—š   œžœ!žœžœžœ˜tK˜—š œžœ;žœ˜YK˜—š   œžœžœžœžœ'˜xK˜—š œžœ<žœ˜[K˜—š  œžœ6˜HK˜—š œžœ"˜8K˜—š   œžœ&žœžœžœ>˜žK˜——šœ™K˜š œžœžœ žœ˜@K™=K˜—š  œžœ6žœ ˜oK˜—š  œžœ"žœ žœžœžœ ˜‰K˜—š œžœžœžœžœ žœžœžœ ˜®K˜——™ K˜š œžœ˜!K˜—š  œžœ˜#K™lK˜—š œžœ˜K˜——Kšžœ˜K™™Kšœ$  œ  œ œ™\——…— ôW