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. Œ IPtoCIPCommands.mesa Copyright ำ 1992, 1993 by Xerox Corporation. All rights reserved. Michael Plass, January 29, 1993 5:47 pm PST สซ•NewlineDelimiter –(cedarcode) style™codešฯtœ ™Kšœ ฯeœ7™BK™+K™—Kšฯk œฦŸœ)˜๚K˜KšะntฯnœŸœŸ˜KšŸœœŸœ$˜ษšœŸ˜K˜K˜KšœŸœ'˜;KšŸœŸœŸœ˜K˜š œ Ÿœ5œ˜RK˜—š กœ˜)šกœ!˜$˜K˜K˜K˜K˜——KšœŸœ"˜,šŸœŸœŸœ'Ÿœ˜?KšœŸœ˜Kšœ Ÿœ˜$K˜NK˜YKšœŸœ˜KšœŸœ ˜KšœŸœ ˜KšœŸœ˜K˜BKšœ Ÿœ˜Kšœ Ÿœ˜Kš œŸœŸœŸœŸœ˜SKš œŸœŸœŸœŸœ˜SKšœŸœ8˜@KšœหŸœ˜าK˜NK•StartOfExpansionw[pixelMap: ImagerPixel.PixelMap, box: SF.Box, scanMode: ImagerTransformation.ScanMode, immutable: BOOL _ FALSE]šœฝŸœ˜ฤK–[[context: Imager.Context, from: ImagerBackdoor.CoordSys, to: ImagerBackdoor.CoordSys]šœt˜tK˜EK˜7šŸœŸœŸœŸ˜!šก œŸœ˜.Kšœ(˜(Kšœ%Ÿœ˜,K–>[context: Imager.Context, pa: ImagerPixelArray.PixelArray]šœ\˜\Kšœ˜—K˜Kšœ˜KšœW˜WK˜K˜/K˜KšŸœ˜—Kšœ˜K˜#K˜,K˜—K˜K˜—Kšœœœ  œ ˜A—K˜KšŸœ˜—…— ๊!