1. NewIPToPD (alias MandM)
<spec> ::= <tonerList> | (of (3 | 4)) | (<pixelsPerHalftoneDot> ppd) | (<tx> in <ty> in translate) | (<rotate> rotate) | (<scale> (scale | scaleX | scaleY)) | (<skip> skipPages) | (<nPages> nPages) | (<pixelsPerInch> (sResolution | fResolution | Resolution)) | (<pageSizeInInches> (pageSSize | pageFSize)) | (<ucrParm> (gamma | threshold | removedFraction) | (fontTuning <fontTuneSpec>) | <angle> cyanangle | <angle> magentaangle | <angle> yellowangle | <angle> blackangle | leftovers | noLeftovers | (<n> (bandSize | load | deviceCode)) | <array> <brickPhase> <toner> brick
<tonerList> ::= {black | cyan | magenta | yellow}
<toner> ::= black | cyan | magenta | yellow
<vector> ::= [ { <realNumber> } ]
<array> ::= [ { <vector> } ]
<input> is the file name of an Interpress master in the Xerox encoding
<output> will be a PD file
<deviceType>: raven300 | raven384 | plateMaker | puffin | colorVersatec | versatec | color400 | c150 | colorado384 | ... (FindR *.pdDeviceSpec to see current list of supported devices)
black | cyan | magenta | yellow
denotes which color passes are desired (do not use for versatec or colorVersatec).
of <number> specifies how many inks the press has (defaults to the inks specified by name)
<pixelsPerHalftoneDot> ppd specifies how many pixels per halftone dot
<tx> and <ty> are translations of the whole page, in inches
<rotate> is a rotation of the whole page, in degrees; note you will generally have to supply a translation as well to keep the image on the page
<scale> is a scale factor for the whole page, applied in either the slow or fast scan directions, or both
<skip> is the number of pages to skip at the beginning of the file (default 0)
<nPages> is the number of pages to print (default is to print to end)
<pixelsPerInch> specified printer pixels per inch in either the slow or fast (or both) scan directions
<pageSizeInInches> is the length or width of the page
gamma is the percentage of black ink to put down where a 3-color would have been printed
threshold is the minimum 3-color black at which to begin undercolor removal
removedFraction is the percentage of cyan, magenta, and yellow inks to remove as black ink is added
gamma, threshold, removedFraction are the undercolor removal paramaters
<fontTuneSpec> is a ROPE passed to ImagerPD. Available only for the Raven printer. Currently available strings are: Raven1.fontTune, RavenCraft384.fontTune, Simple1.fontTune, Simple0.fontTune. This will make your font scan conversion take a LONG TIME (first time only). The caching lasts until you rollback.
<angle> is a REAL which is a screen angle for the specified color. Default values are black: 90, cyan: 75, magenta: 105, yellow: 45.
leftovers | noLeftovers specifies leftovers parm passed to ImagerPD (wizards only)
<n> sets one of the ImagerPD parameters: bandSize, load, or deviceCode (wizards only)
<array> <brickPhase> <toner> brick specifies a Holliday halftone brick for the specified toner (wizards only)
2. Registering a color correction procedure
There is now a procedure in the interface IPToPDCommand for registering a color correction procedure. This procedure will be called once for each constant color, and once per pixel for each sampled color.
CorrectionProc:
TYPE =
PROC[r,g,b:
CARDINAL, data:
REF, toner: Toner]
RETURNS [
CARDINAL];
Takes r,g,b in [0..255] (0=black, 255 = full on) and returns a value for magenta, cyan, yellow or black in the range [255..0] (255=none, 0=full on).
RegisterCorrectionProc:
PROC[type:
ATOM, colorCorrectionProc: NewImagerPD.CorrectionProc, colorCorrectionData:
REF];
Register color correction procedures for the specified device. Atom must match name.DeviceSpec, ie: $Color400, $ColorVersatec, $Colorado384, $C150
The semantics of the correction procedure is historical, and can be a bit confusing. An example, which removes all the gray component of a color and replaces it with the same amount of black (not a good idea), is included below.
FullUCR: NewImagerPD.CorrectionProc = {
c ← 255-r; m ← 255-g; y ← 255-b;
gc ← MIN[c,m,y];
r ← 255-(c-gc); g ← 255-(m-gc); b ← 255-(y-gc);
RETURN one of r,g,b or 255-gc;
gc: CARDINAL ← MIN[255-r,255-g,255-b];
RETURN[
SELECT toner
FROM
cyan =>r+gc, magenta => g+gc, yellow => b+gc, ENDCASE => 255-gc];
};
IPToPDCommand.RegisterCorrectionProc[$Color400, FullUCR, NIL];