DIRECTORY Commander, CommanderOps, Convert, FS, Imager, ImagerBox, ImagerMaskCapture, ImagerTransformation, InterpressInterpreter, IO, Rope, SF; InterpressSizeCommandImpl: CEDAR PROGRAM IMPORTS Commander, CommanderOps, Convert, FS, Imager, ImagerBox, ImagerMaskCapture, ImagerTransformation, InterpressInterpreter, IO ~ BEGIN InterpressSizeCommand: Commander.CommandProc ~ { ENABLE { FS.Error => { msg ¬ error.explanation; GOTO Failure; }; Convert.Error => { msg ¬ "Conversion error"; GOTO Failure; }; }; args: CommanderOps.ArgumentVector ~ CommanderOps.Parse[cmd]; IF args.argc # 2 THEN RETURN[$Failure, interpressSizeUsage] ELSE { m: Imager.Transformation ¬ ImagerTransformation.Scale[150.0/0.0254]; -- ~150 pixels/inch n: Imager.Transformation ¬ ImagerTransformation.PostScale[m, 0.0254]; -- back to inches master: InterpressInterpreter.Master ¬ InterpressInterpreter.Open[args[1], NIL]; FOR page: INT IN [1..master.pages] DO Operator: PROC [context: Imager.Context] ~ { Imager.SetColor[context, Imager.black]; Imager.SetStrokeEnd[context, square]; Imager.SetStrokeWidth[context, 0.0]; Imager.SetAmplifySpace[context, 1.0]; InterpressInterpreter.DoPage[master, page, context, NIL]; }; b: SF.Box ¬ ImagerMaskCapture.CaptureBounds[Operator, m ! ImagerMaskCapture.Cant => RESUME]; r: ImagerBox.Rectangle ¬ ImagerTransformation.InverseTransformRectangle[ n, ImagerBox.RectangleFromBox[[b.min.s, b.min.f, b.max.s, b.max.f]]]; IF master.pages > 1 THEN IO.PutF1[cmd.out, "P %g, ", IO.int[page]]; IO.PutFL[cmd.out, "origin: [%5.3f, %5.3f], width: %5.3f, height: %5.3f (inches)\n", LIST[IO.real[r.x], IO.real[r.y], IO.real[r.w], IO.real[r.h]]]; ENDLOOP; }; EXITS Failure => result ¬ $Failure; }; interpressSizeUsage: Rope.ROPE ~ " InterpressSize | IPSize Predict the (device independent) printed size of an interpress file. Although not performing unnecessary operations, the entire Interpress file is examined, which might take a long time."; Commander.Register["InterpressSize", InterpressSizeCommand, interpressSizeUsage]; Commander.Register["IPSize", InterpressSizeCommand, interpressSizeUsage]; END. Ξ InterpressSizeCommandImpl.mesa Copyright Σ 1984, 1985, 1986, 1987, 1992 by Xerox Corporation. All rights reserved. Bloomenthal, May 9, 1988 3:16:19 pm PDT Michael Plass, April 15, 1992 3:33 pm PDT Κ•NewlineDelimiter –(cedarcode) style™™Jšœ ΟeœI™TJ™'J™)J™—codešΟk ˜ Kšœ"žœUžœžœ˜†—K˜šΠlnœžœž˜(Kšžœ#žœUž˜ƒK˜—šœž˜K˜šΟnœ˜0šžœ˜šžœ ˜ K˜Kšžœ ˜ K˜—˜K˜Kšžœ ˜ K˜—K˜—K˜<šžœ˜Kšžœžœ˜*šžœ˜KšœEΟc˜XKšœF‘˜WKšœKžœ˜Pšžœžœžœž˜%š œžœ˜,K˜'K˜%K˜$K˜%Kšœ4žœ˜9K˜—šœžœ2˜7Kšœžœ˜$—˜HK˜E—Kšžœžœžœžœ ˜CKš žœRžœžœ žœ žœ žœ ˜’Kšžœ˜—K˜——Kšžœ˜#K˜—K˜Kšœžœλ˜‰K˜K˜QK˜IK˜—Kšžœ˜—…—L