IPtoCIPCommands.mesa
Copyright Ó 1992, 1993 by Xerox Corporation. All rights reserved.
Michael Plass, January 29, 1993 5:47 pm PST
DIRECTORY Commander, CommanderOps, Convert, Imager, ImagerBackdoor, ImagerInterpress, ImagerPixel, ImagerPixelArray, ImagerPrintContext, ImagerSample, ImagerSys, ImagerTransformation, InterpressInterpreter, IO, Process, Real, Rope, SF, XeroxCompress;
IPtoCIPCommands: CEDAR PROGRAM
IMPORTS Commander, CommanderOps, Imager, ImagerBackdoor, ImagerInterpress, ImagerPixel, ImagerPixelArray, ImagerPrintContext, ImagerSample, InterpressInterpreter, IO, Process, Real, Rope, XeroxCompress
~ BEGIN
Transformation: TYPE ~ ImagerTransformation.Transformation;
ROPE: TYPE ~ Rope.ROPE;
docIPtoCIPCommand: ROPE ~ "Convert an Interpress master to compressed Interpress";
IPtoCIPCommand: Commander.CommandProc ~ {
Log: InterpressInterpreter.LogProc ~
{
cmd.out.PutRope["*** "];
cmd.out.PutRope[explanation];
cmd.out.PutRope["\n"];
};
arg0: ROPE ← CommanderOps.NextArgument[cmd];
IF arg0 = NIL THEN CommanderOps.Failed[cmd.procData.doc] ELSE {
inName: ROPE ~ arg0;
outName: ROPE ~ arg0.Concat[".cip"];
input: InterpressInterpreter.Master = InterpressInterpreter.Open[inName, Log];
output: ImagerInterpress.Ref ~ ImagerInterpress.Create[outName, "Interpress/Xerox/2.0 "];
ppi: REAL = 300;
pixelsPerDot: REAL = 5.525;
metersPerInch: REAL = 0.0254;
ppm: REAL = ppi/metersPerInch;
scanMode: ImagerTransformation.ScanMode ¬ [slow: right, fast: up];
pageHeight: REAL = 11.0;
pageWidth: REAL = 8.5;
sIn: REAL = SELECT scanMode.slow FROM up, down => pageHeight, ENDCASE => pageWidth;
fIn: REAL = SELECT scanMode.fast FROM up, down => pageHeight, ENDCASE => pageWidth;
size: SF.Vec = [s: Real.Round[sIn*ppi], f: Real.Round[fIn*ppi]];
bitmapContext: Imager.Context = ImagerPrintContext.SimpleCreate[deviceSpaceSize: size, scanMode: scanMode, surfaceUnitsPerInch: [ppi, ppi], logicalDevice: 0, pixelsPerHalftoneDot: 5.525, toners: [black: TRUE]];
bitmap: ImagerSample.RasterSampleMap ¬ ImagerSample.NewSampleMap[[max: size]];
bitmapAsPixelArray: ImagerPixelArray.PixelArray ¬ ImagerPixelArray.FromPixelMap[pixelMap: ImagerPixel.MakePixelMap[bitmap], box: ImagerSample.GetBox[bitmap], scanMode: scanMode, immutable: FALSE];
pixelsToMeters: Transformation = ImagerBackdoor.GetTransformation[context: bitmapContext, from: device, to: client];
ImagerPrintContext.SetBitmap[context: bitmapContext, bitmap: bitmap];
ImagerPrintContext.SetSeparation[bitmapContext, black];
FOR i: INT IN [1..input.pages] DO
PageAction: PROC [context: Imager.Context] ~ {
Imager.ConcatT[context, pixelsToMeters];
Imager.SetPriorityImportant[context, FALSE];
Imager.MaskPixel[context: context, pa: XeroxCompress.CompressPixelArray[bitmapAsPixelArray]]
};
Process.CheckForAbort[];
ImagerSample.Clear[bitmap];
InterpressInterpreter.DoPage[master: input, page: i, context: bitmapContext, log: Log];
Process.CheckForAbort[];
ImagerInterpress.DoPage[output, PageAction, 1];
Process.CheckForAbort[];
ENDLOOP;
ImagerInterpress.Close[output];
InterpressInterpreter.Close[input];
cmd.out.PutRope[Rope.Concat[outName, "\n"]];
};
};
Commander.Register["IPtoCIP", IPtoCIPCommand, docIPtoCIPCommand];
END.