DIRECTORY Convert, FS, Imager, ImagerColor, ImagerColorFns, ImagerFont, ImagerInterpress, ImagerPath, Interpress, IO, NectarineAids, Real, Rope, TerminalIO, UserCredentials; NectarineAidsImpl: CEDAR PROGRAM IMPORTS Convert, FS, Imager, ImagerColorFns, ImagerFont, ImagerInterpress, ImagerPath, Interpress, IO, Real, Rope, TerminalIO, UserCredentials EXPORTS NectarineAids ~ BEGIN OPEN Imager, ImagerInterpress, NectarineAids; ROPE: TYPE ~ Rope.ROPE; Font: TYPE ~ ImagerFont.Font; margin: REAL _ 5.0; -- in mm width: REAL _ 0.5; -- in mm radius: REAL _ 10.0; regularFace: Font _ ImagerFont.Find ["Xerox/PressFonts/Modern-MRR", substituteQuietly]; boldFace: Font _ ImagerFont.Find ["Xerox/PressFonts/Modern-BRR", substituteQuietly]; italicFace: Font _ ImagerFont.Find ["Xerox/PressFonts/Modern-MIR", substituteQuietly]; ComposeFrame: PROC [caption: ROPE] ~ BEGIN lc: Context; -- local context name: ROPE ~ "[]<>7.0>Commands>gbbFrame.Interpress"; master: ImagerInterpress.Ref ~ ImagerInterpress.Create [name]; fontI: Font ~ italicFace.Scale [3.0]; t: ImagerPath.Trajectory; midPoint: REAL ~ radius * 0.7071068; compl: REAL ~ radius - midPoint; SetPage: PROC ~ BEGIN bottomLeft: VEC ~ [0.0 + margin, 0.0 + margin]; bottomRight: VEC ~ [215.9 - margin, 0.0 + margin]; topRight: VEC ~ [215.9 - margin, 279.4 - margin]; topLeft: VEC ~ [0.0 + margin, 279.4 - margin]; pos, next: VEC; lc.SetStrokeWidth [width]; lc.SetFont [fontI]; pos _ [bottomLeft.x + 30.0 + 3.0, bottomLeft.y]; lc.SetXY [pos]; lc.ShowRope [caption]; pos.x _ pos.x + 3.0 + ImagerFont.RopeEscapement [fontI, caption].x; t _ ImagerPath.MoveTo [pos]; pos.x _ bottomRight.x - radius; t _ t.LineTo [pos]; next _ bottomRight; next.y _ next.y + radius; pos _ [pos.x + midPoint, pos.y + compl]; t _ t.ArcTo [pos, next]; pos _ topRight; pos.y _ pos.y - radius; t _ t.LineTo [pos]; next _ topRight; next.x _ next.x - radius; pos _ [pos.x - compl, pos.y + midPoint]; t _ t.ArcTo [pos, next]; pos _ topLeft; pos.x _ pos.x + radius; t _ t.LineTo [pos]; next _ topLeft; next.y _ next.y - radius; pos _ [pos.x - midPoint, pos.y - compl]; t _ t.ArcTo [pos, next]; pos _ bottomLeft; pos.y _ pos.y + radius; t _ t.LineTo [pos]; next _ bottomLeft; next.x _ next.x + radius; pos _ [pos.x + compl, pos.y - midPoint]; t _ t.ArcTo [pos, next]; pos _ [bottomLeft.x + 30.0 , bottomLeft.y]; t _ t.LineTo [pos]; lc.MaskStrokeTrajectory [t] END; DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [SetPage]}; master.DeclareFont [fontI]; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END; -- ComposeFrame AFrame: PROC ~ BEGIN lc: Context; -- local context name: ROPE ~ "[]<>7.0>Commands>AFrame.Interpress"; master: ImagerInterpress.Ref ~ ImagerInterpress.Create [name]; SetPage: PROC ~ BEGIN lc.SetStrokeWidth [0.0]; lc.MaskVector [[0.0, 0.0], [215.9, 0.0]]; lc.MaskVector [[215.9, 0.0], [215.9, 279.4]]; lc.MaskVector [[215.9, 279.4], [0.0, 279.4]]; lc.MaskVector [[0.0, 279.4], [0.0, 0.0]] END; DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [SetPage]}; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END; -- AFrame MakeCircle: PROC [c: VEC, r: REAL] RETURNS [circle: ImagerPath.Trajectory] ~ BEGIN IF (r < 0) THEN ERROR; IF (r = 0) THEN RETURN [NIL]; circle _ ImagerPath.MoveTo [[c.x+r, c.y]]; circle _ circle.ArcTo [[c.x-r, c.y], [c.x+r, c.y]] END; -- MakeCircle ComposeCenterAndCropMarks: PUBLIC PROC [context: Context _ NIL, medium: MediumSize _ A] ~ BEGIN lc: Context; -- local context master: ImagerInterpress.Ref; name: ROPE _ "[]<>7.0>Commands>CenterAndCropMarks"; cmykBlack: Color ~ ImagerColorFns.ColorFromCMYK [[1.0, 1.0, 1.0, 1.0]]; cm: REAL ~ 10.0; halfCm: REAL ~ 5.0; strokeWidth: REAL ~ 0.2; bb: Rectangle; tag: ROPE _ NIL; SetPage: PROC ~ BEGIN lc.SetStrokeJoint [miter]; lc.SetStrokeEnd [butt]; lc.SetStrokeWidth [strokeWidth]; lc. SetColor [cmykBlack]; lc.MaskVector [[bb.x+bb.w/2.0, bb.y-cm], [bb.x+bb.w/2.0, bb.y-1.0]]; lc.MaskVector [[bb.x+bb.w+1.0, bb.y+bb.h/2.0], [bb.x+bb.w+cm, bb.y+bb.h/2.0]]; lc.MaskVector [[bb.x+bb.w/2.0, bb.y+bb.h+cm], [bb.x+bb.w/2.0, bb.y+bb.h+1.0]]; lc.MaskVector [[bb.x-cm, bb.y+bb.h/2.0], [bb.x-1.0, bb.y+bb.h/2.0]]; lc.MaskVector [[bb.x-1.0, bb.y], [bb.x-cm, bb.y]]; lc.MaskVector [[bb.x+bb.w+cm, bb.y], [bb.x+bb.w+1.0, bb.y]]; lc.MaskVector [[bb.x+bb.w, bb.y-1.0], [bb.x+bb.w, bb.y-cm]]; lc.MaskVector [[bb.x+bb.w, bb.y+bb.h+cm], [bb.x+bb.w, bb.y+bb.h+1.0]]; lc.MaskVector [[bb.x+bb.w+1.0, bb.y+bb.h], [bb.x+bb.w+cm, bb.y+bb.h]]; lc.MaskVector [[bb.x-1.0, bb.y+bb.h], [bb.x-cm, bb.y+bb.h]]; lc.MaskVector [[bb.x, bb.y+bb.h+1.0], [bb.x, bb.y+bb.h+cm]]; lc.MaskVector [[bb.x, bb.y-1.0], [bb.x, bb.y-cm]]; END; -- SetPage DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [SetPage]}; bb _ [x: 0.0, y: 0.0, w: 215.9, h: 279.4]; SELECT medium FROM A => NULL; B => {bb.w _ 279.4; bb.h _ 431.8; tag _ "B"}; A3 => {bb.w _ 297.0; bb.h _ 420.0; tag _ "A3"}; A4 => {bb.w _ 210.0; bb.h _ 297.0; tag _ "A4"}; A5 => {bb.w _ 148.0; bb.h _ 210.0; tag _ "A5"}; C4 => {bb.w _ 324.0; bb.h _ 229.0; tag _ "C4"}; C5 => {bb.w _ 229.0; bb.h _ 162.0; tag _ "C5"}; C65 => {bb.w _ 224.0; bb.h _ 114.0; tag _ "C65"}; C6 => {bb.w _ 162.0; bb.h _ 114.0; tag _ "C6"}; ENDCASE => ERROR; IF (context = NIL) THEN BEGIN master _ ImagerInterpress.Create [name.Cat [tag, ".Interpress"]]; master.DeclareColorOperator [ImagerColorFns.NewColorOperatorCMYK [1000]]; master.DeclareColor [cmykBlack]; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END ELSE {lc _ context; context.DoSave [SetPage]} END; -- ComposeCenterAndCropMarks ComposeRegisterMarks: PUBLIC PROC [creator: ROPE _ NIL, process: BOOL _ TRUE, context: Context _ NIL] ~ BEGIN lc: Context; -- local context master: ImagerInterpress.Ref; name: ROPE ~ "[]<>7.0>Commands>RegisterMarks.Interpress"; creatorLabel: ROPE; blackBlack: Color ~ ImagerColorFns.ColorFromCMYK [[0.0, 0.0, 0.0, 1.0]]; cmykBlack: Color ~ ImagerColorFns.ColorFromCMYK [[1.0, 1.0, 1.0, 1.0]]; cyan: Color ~ ImagerColorFns.ColorFromCMYK [[1.0, 0.0, 0.0, 0.0]]; magenta: Color ~ ImagerColorFns.ColorFromCMYK [[0.0, 1.0, 0.0, 0.0]]; yellow: Color ~ ImagerColorFns.ColorFromCMYK [[0.0, 0.0, 1.0, 0.0]]; cm: REAL ~ 10.0; halfCm: REAL ~ 5.0; strokeWidth: REAL ~ 0.2; bb: Rectangle ~ [x: 0.0, y: 0.0, w: 215.9, h: 279.4]; large: Font ~ regularFace.Scale [cm]; small: Font ~ regularFace.Scale [halfCm]; SetPage: PROC ~ BEGIN x, y: REAL; circle: ImagerPath.Trajectory; inkC, inkM, inkY, inkK: ROPE; SetCross: PROC [x, y: REAL] ~ BEGIN lc.MaskRectangle [[x: x, y: y+halfCm, w: cm, h: strokeWidth]]; lc.MaskRectangle [[x: x+halfCm, y: y, w: strokeWidth, h: cm]] END; -- SetCross lc.SetStrokeJoint [miter]; lc.SetStrokeEnd [butt]; lc.SetStrokeWidth [strokeWidth]; lc. SetColor [cmykBlack]; lc.SetFont [small]; lc.MaskVector [[bb.x+bb.w/2.0, bb.y-cm], [bb.x+bb.w/2.0, bb.y-1.0]]; lc.MaskVector [[bb.x+bb.w+1.0, bb.y+bb.h/2.0], [bb.x+bb.w+cm, bb.y+bb.h/2.0]]; lc.MaskVector [[bb.x+bb.w/2.0, bb.y+bb.h+cm], [bb.x+bb.w/2.0, bb.y+bb.h+1.0]]; lc.MaskVector [[bb.x-cm, bb.y+bb.h/2.0], [bb.x-1.0, bb.y+bb.h/2.0]]; lc.MaskVector [[bb.x-1.0, bb.y], [bb.x-cm, bb.y]]; lc.MaskVector [[bb.x+bb.w+cm, bb.y], [bb.x+bb.w+1.0, bb.y]]; lc.MaskVector [[bb.x+bb.w, bb.y-1.0], [bb.x+bb.w, bb.y-cm]]; lc.MaskVector [[bb.x+bb.w, bb.y+bb.h+cm], [bb.x+bb.w, bb.y+bb.h+1.0]]; lc.MaskVector [[bb.x+bb.w+1.0, bb.y+bb.h], [bb.x+bb.w+cm, bb.y+bb.h]]; lc.MaskVector [[bb.x-1.0, bb.y+bb.h], [bb.x-cm, bb.y+bb.h]]; lc.MaskVector [[bb.x, bb.y+bb.h+1.0], [bb.x, bb.y+bb.h+cm]]; lc.MaskVector [[bb.x, bb.y-1.0], [bb.x, bb.y-cm]]; circle _ MakeCircle [[-halfCm+1.0, -halfCm+1.0], halfCm]; SetCross [-cm+1.0, -cm+1.0]; lc.MaskStrokeTrajectory [circle]; circle _ MakeCircle [[bb.x+bb.w+halfCm, -halfCm+1.0], halfCm]; SetCross [bb.x+bb.w, -cm+1.0]; lc.MaskStrokeTrajectory [circle]; circle _ MakeCircle [[bb.x+bb.w+halfCm, bb.y+bb.h+halfCm-1.0], halfCm]; SetCross [bb.x+bb.w, bb.y+bb.h-1.0]; lc.MaskStrokeTrajectory [circle]; circle _ MakeCircle [[-halfCm+1.0, bb.y+bb.h+halfCm-1.0], halfCm]; SetCross [-cm+1.0, bb.y+bb.h-1.0]; lc.MaskStrokeTrajectory [circle]; x _ cm; y _ bb.y + bb.h + 1.0; lc.SetColor [cyan]; lc.MaskRectangle [[x: x, y: y, w: cm, h: halfCm]]; lc.SetColor [magenta]; x _ x + 1.2 * cm; lc.MaskRectangle [[x: x, y: y, w: cm, h: halfCm]]; lc.SetColor [yellow]; x _ x + 1.2 * cm; lc.MaskRectangle [[x: x, y: y, w: cm, h: halfCm]]; lc.SetColor [blackBlack]; x _ x + 1.2 * cm; lc.MaskRectangle [[x: x, y: y, w: cm, h: halfCm]]; lc.SetColor [cmykBlack]; lc.SetXY [[x + 1.5 * cm, y]]; lc.ShowRope ["100%"]; IF (creator = NIL) THEN BEGIN inkC _ "Cyan"; inkM _ "Magenta"; inkY _ "Yellow"; inkK _ "Black" END ELSE IF process THEN BEGIN inkC _ "SOP-cyan"; inkM _ "SOP-magenta"; inkY _ "SOP-yellow"; inkK _ "SOP-black" END ELSE BEGIN inkC _ "C28-blue"; inkM _ "RT6-red"; inkY _ "M35/2-magenta"; inkK _ "GT4-green" END; lc.SetXY [[bb.x+bb.w/2.0+1.5*cm, bb.y+bb.h+1.0]]; IF (context # NIL) THEN BEGIN lc.ShowRope [IO.PutR1 [IO.time[]]]; lc.SetXY [[bb.x+bb.w/2.0+5.0*cm, -7.0]]; lc.ShowRope [UserCredentials.Get[].name]; lc.SetXY [[bb.x+cm, -7.0]]; WITH context.GetProp [$separationLabel] SELECT FROM r: ROPE => lc.ShowRope [r]; ENDCASE => NULL END ELSE lc.ShowRope ["Interpress 3.0"]; lc.RotateT [-90.0]; lc.TranslateT [[-279.4, 0.0]]; x _ halfCm; y _ bb.x + bb.w + 3.0; lc.SetFont [large]; lc.SetXY [[x, y]]; lc.SetColor [cyan]; lc.ShowRope [inkC]; x _ x + ImagerFont.RopeEscapement [large, inkC].x + 2.0 * cm; lc.SetXY [[x, y]]; lc.SetColor [magenta]; lc.ShowRope [inkM]; x _ x + ImagerFont.RopeEscapement [large, inkM].x + 2.0 * cm; lc.SetXY [[x, y]]; lc.SetColor [yellow]; lc.ShowRope [inkY]; x _ x + ImagerFont.RopeEscapement [large, inkY].x + 2.0 * cm; lc.SetXY [[x, y]]; lc.SetColor [blackBlack]; lc.ShowRope [inkK]; x _ halfCm; y _ -halfCm; lc.SetFont [small]; lc.SetXY [[x, y]]; lc.SetColor [cmykBlack]; creatorLabel _ "Copyright (c) 1988 by Xerox Corporation. All rights reserved."; IF (creator = NIL) THEN creatorLabel _ creatorLabel.Concat [" PARC EDL, 3333 Coyote Hill Road, Palo Alto, 494-4441"] ELSE creatorLabel _ creatorLabel.Cat [" Created with ", creator, ". Giordano Beretta, PARC EDL"]; lc.ShowRope [creatorLabel] END; -- SetPage DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [SetPage]}; IF (context = NIL) THEN BEGIN master _ ImagerInterpress.Create [name]; master.DeclareColorOperator [ImagerColorFns.NewColorOperatorCMYK [1000]]; master.DeclareFont [large]; master.DeclareFont [small]; master.DeclareColor [cmykBlack]; master.DeclareColor [blackBlack]; master.DeclareColor [cyan]; master.DeclareColor [magenta]; master.DeclareColor [yellow]; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END ELSE {lc _ context; context.DoSave [SetPage]} END; -- ComposeRegisterMarks CMYKscales: PROC ~ BEGIN lc: Context; -- local context font: Font ~ regularFace.Scale [10.0]; name: ROPE ~ "[]<>Temp>Nectarine>CMYK-Scales.Interpress"; master: ImagerInterpress.Ref ~ ImagerInterpress.Create [name]; cmykBlack: Color ~ ImagerColorFns.ColorFromCMYK [[1.0, 1.0, 1.0, 1.0]]; r: Rectangle _ [x: 0.0, y: 0.0, w: 96.6 , h: 101.6]; DoIt: PROC ~ BEGIN lc.SetPriorityImportant [FALSE]; lc.SetFont [font]; FOR i: [1 .. 10] IN [1 .. 10] DO ii: REAL ~ Real.Float [i] / 10.0; lc.SetColor [ImagerColorFns.ColorFromCMYK [[0.0, 0.0, 0.0, ii]]]; lc.MaskRectangle [r]; lc.SetColor [cmykBlack]; lc.SetXY [[r.x, r.y-11.0]]; lc.ShowRope [Convert.RopeFromReal [ii]]; r.x _ r.x + 101.6 ENDLOOP; r.x _ 0.0; r.y _ r.y + 120.0; FOR i: [1 .. 10] IN [1 .. 10] DO ii: REAL ~ Real.Float [i] / 10.0; lc.SetColor [ImagerColorFns.ColorFromCMYK [[0.0, 0.0, ii, 0.0]]]; lc.MaskRectangle [r]; lc.SetColor [cmykBlack]; lc.SetXY [[r.x, r.y]]; lc.ShowRope [Convert.RopeFromReal [ii]]; r.x _ r.x + 101.6 ENDLOOP; r.x _ 0.0; r.y _ r.y + 120.0; FOR i: [1 .. 10] IN [1 .. 10] DO ii: REAL ~ Real.Float [i] / 10.0; lc.SetColor [ImagerColorFns.ColorFromCMYK [[0.0, ii, 0.0, 0.0]]]; lc.MaskRectangle [r]; lc.SetColor [cmykBlack]; lc.SetXY [[r.x, r.y]]; lc.ShowRope [Convert.RopeFromReal [ii]]; r.x _ r.x + 101.6 ENDLOOP; r.x _ 0.0; r.y _ r.y + 120.0; FOR i: [1 .. 10] IN [1 .. 10] DO ii: REAL ~ Real.Float [i] / 10.0; lc.SetColor [ImagerColorFns.ColorFromCMYK [[ii, 0.0, 0.0, 0.0]]]; lc.MaskRectangle [r]; lc.SetColor [cmykBlack]; lc.SetXY [[r.x, r.y]]; lc.ShowRope [Convert.RopeFromReal [ii]]; r.x _ r.x + 101.6 ENDLOOP END; DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [DoIt]}; master.DeclareColorOperator [ImagerColorFns.NewColorOperatorCMYK [1000]]; master.DeclareFont [font]; master.DeclareColor [cmykBlack]; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END; -- CMYKscales ComposeStrip: PROC [r: Rectangle, masterName: ROPE] ~ BEGIN lc: Context; -- local context master: ImagerInterpress.Ref ~ ImagerInterpress.Create [masterName]; cmykBlack: Color ~ ImagerColorFns.ColorFromCMYK [[1.0, 1.0, 1.0, 1.0]]; DoIt: PROC ~ BEGIN lc.SetPriorityImportant [FALSE]; lc.SetColor [cmykBlack]; lc.MaskRectangle [r] END; DrawToIP: PROC [context: Imager.Context] ~ {lc _ context; context.DoSave [DoIt]}; master.DeclareColorOperator [ImagerColorFns.NewColorOperatorCMYK [1000]]; master.DeclareColor [cmykBlack]; master.DoPage [action: DrawToIP, scale: 0.001]; -- millimetres master.Close [] END; -- ComposeStrip MakeTextBlack: PROC [masterName: ROPE] RETURNS [newName: ROPE] ~ BEGIN pos: FS.ComponentPositions; fullName: ROPE; out: ImagerInterpress.Ref; image: Interpress.Master; [fullName, pos] _ FS.ExpandName [masterName]; newName _ fullName.Substr [pos.base.start, pos.base.length].Concat ["-Black"]; newName _ fullName.Replace [pos.base.start, pos.base.length, newName]; out _ ImagerInterpress.Create [newName]; image _ Interpress.Open [masterName, LogInterpress]; FOR page: INT IN [1 .. image.pages] DO DoIt: PROC [context: Imager.Context] ~ BEGIN context.SetColor [ImagerColorFns.ColorFromCMYK [[0.0, 0.0, 0.0, 1.0]]]; Interpress.DoPage [master: image, page: page, context: context, log: LogInterpress]; END; -- DoIt ImagerInterpress.DoPage [self: out, action: DoIt] ENDLOOP; image.Close; out.Close; image _ NIL; out_ NIL; TerminalIO.PutF ["\n%g copied to %g with default color only in the black separation.\n", IO.rope [masterName], IO.rope [newName]] END; -- MakeTextBlack LogInterpress: Interpress.LogProc ~ BEGIN TerminalIO.PutRope [SELECT class FROM Interpress.classMasterError => "Master Error: ", Interpress.classMasterWarning => "Master Warning: ", Interpress.classAppearanceError => "Appearance Error: ", Interpress.classAppearanceWarning => "Appearance Warning: ", Interpress.classComment => "Comment: ", ENDCASE => IO.PutFR1 ["Class %g error: ", IO.int [class]]]; TerminalIO.PutRope [explanation]; TerminalIO.PutRope [" . . . \n"] END; -- LogInterpress END. ΚNectarineAidsImpl.Mesa Copyright Σ 1987, 1988 by Xerox Corporation. All rights reserved. Written by Giordano Bruno Beretta, November 17, 1987 4:07:37 pm PST gbb September 21, 1988 10:33:33 am PDT Create the frame and register Interpress masters. At the time of writing, the condenser stepping from scan line to scan line is in a bad shape on Quoth, but quite well adjusted in the Zipper. CreateButton Frame TiogaToInterpress ///Temp/Temp.Interpress _ $FileNameSelection$; InterpressOverlay ///Temp/Temp-gbb.Interpress _ ///Temp/Temp.Interpress []<>7.0>Commands>gbbFrame.Interpress; Echo SendIPMaster -h Foo -c 1 ///Temp/Temp-gbb.Interpress Frame of A size paper. ... at center c with radius r. For creating Cromalin proofs. From MetaPaletteImpl. If context # NIL, the register and crop marks are added to the context assuming the units of measure are millimetres. Otherwise an Interpress master is created. Draw center marks. Bottom, right, top, left: Draw trim marks. Bottom. Right. Top. Left. Draw frame. Use only for debugging. lc.MaskVector [[bb.x, bb.y], [bb.x+bb.w, bb.y]]; lc.MaskVector [[bb.x+bb.w, bb.y], [bb.x+bb.w, bb.y+bb.h]]; lc.MaskVector [[bb.x+bb.w, bb.y+bb.h], [bb.x, bb.y+bb.h]]; lc.MaskVector [[bb.x, bb.y+bb.h], [bb.x, bb.y]]; For creating Cromalin proofs. From MetaPaletteImpl. If context # NIL, the register and crop marks, and the separation labels are added to the context assuming the units of measure are millimetres. Otherwise an Interpress master is created. Draws a cross with lower left bounding box at [x, y]. Draw center marks. Bottom, right, top, left: Draw trim marks. Bottom. Right. Top. Left. Draw frame. Use only for debugging. lc.MaskVector [[bb.x, bb.y], [bb.x+bb.w, bb.y]]; lc.MaskVector [[bb.x+bb.w, bb.y], [bb.x+bb.w, bb.y+bb.h]]; lc.MaskVector [[bb.x+bb.w, bb.y+bb.h], [bb.x, bb.y+bb.h]]; lc.MaskVector [[bb.x, bb.y+bb.h], [bb.x, bb.y]]; Draw register marks. Draw 100% color swatches. Draw 50% color swatches. x _ cm; y _ -7.0; lc.SetColor [cyan50]; lc.MaskRectangle [[x: x, y: y, w: 3.0 * cm, h: halfCm]]; lc.SetColor [magenta50]; x _ x + 3.2 * cm; lc.MaskRectangle [[x: x, y: y, w: 3.0 * cm, h: halfCm]]; lc.SetColor [yellow50]; x _ x + 3.2 * cm; lc.MaskRectangle [[x: x, y: y, w: 3.0 * cm, h: halfCm]]; lc.SetColor [black50]; x _ x + 3.2 * cm; lc.MaskRectangle [[x: x, y: y, w: 3.0 * cm, h: halfCm]]; lc.SetColor [cmykBlack]; lc.SetXY [[x + 3.5 * cm, y]]; lc.ShowRope ["50%"]; Label separations. Size for Versatec. All measures in mm. Size for Versatec. All measures in mm. Attempts to achieve that text is written only in the black separation. Called for errors during interpress execution. [class: INT, code: ATOM, explanation: ROPE] ComposeFrame ["Giordano Beretta"]; ComposeRegisterMarks ["Nectarine"] Κ Ž˜šœ™Icode™BKšœC™CK™&K™—K™1Icode2šΟk œiœ9˜­šΠlnœœ˜ Lšœ œPœ)˜ŽLšœ˜—Lšœœœ)˜5Lšœœœ˜Kšœœ˜LšœœΟc˜KšœœŸ˜Kšœœ˜KšœW˜WKšœT˜TKšœV˜VšΟn œœ œ˜*K™Kšœϋ™ϋKšœ Ÿ˜Kšœœ*˜4Kšœ>˜>Kšœ%˜%Kšœ˜Kšœ œ7˜Eunitš œœ˜Kšœ œ ˜/Kšœ œ"˜2Kšœ œ$˜1Kšœ œ"˜.Kšœ œ˜Kšœ.˜.Kšœ0˜0Kšœ&˜&KšœC˜CKšœ˜Kšœ3˜3Kšœ-˜-KšœA˜AKšœ;˜;Kšœ*˜*KšœA˜AKšœ:˜:Kšœ)˜)KšœA˜AKšœ=˜=Kšœ,˜,KšœA˜AKšœ?˜?Kšœ˜Kšœ˜—Mš œœG˜UMšœ˜Kšœ0Ÿ˜>Kšœ˜KšœŸ˜—š œœ˜K™Kšœ Ÿ˜Kšœœ(˜2Kšœ>˜>š œœ˜Kšœ˜Kšœ)˜)Kšœ-˜-Kšœ-˜-Kšœ(˜(Kšœ˜—Mš œœG˜UMšœ0Ÿ˜>Kšœ˜KšœŸ ˜—š   œœœœœ#˜RKšœΟeœ ‘œ™Kšœ œœ˜Kšœ œœœ˜Kšœ*˜*Kšœ2˜2KšœŸ ˜—š  œœœœ˜_K™3Kšœ ™ Kšœ Ÿ˜Kšœ˜Kšœœ)˜3KšœG˜GKšœœœœ˜=Kšœœœ˜š œœ˜Kšœ2˜2Kšœ:˜:™Kšœ™KšœD˜DKšœN˜NKšœN˜NKšœD˜D—™Kšœ™Kšœ2˜2Kšœ<˜Kšœ˜Kš˜—Kšœ*˜.KšœŸ˜!—š œœœ œœ œœœ˜mK™3Kšœ»™»Kšœ Ÿ˜Kšœ˜Kšœœ/˜9Kšœœ˜KšœH˜HKšœG˜GKšœB˜BKšœE˜EKšœD˜DKšœœœœ˜=Kšœ5˜5KšœO˜Oš œœ˜Kšœœ9œ˜Hš œœœ˜#K™5Kšœ>˜>Kšœ=˜=KšœŸ ˜—KšœS˜SKšœ-˜-™Kšœ™KšœD˜DKšœN˜NKšœN˜NKšœD˜D—™Kšœ™Kšœ2˜2Kšœ<˜˜>Kšœ>˜>Kšœ@˜@KšœG˜GKšœF˜FKšœB˜BKšœD˜D—™Kšœ˜Kšœ˜Kšœ2˜2Kšœ(˜(Kšœ2˜2Kšœ'˜'Kšœ2˜2Kšœ+˜+Kšœ2˜2KšœL˜L—™Kšœ™Kšœ™Kšœ8™8Kšœ*™*Kšœ8™8Kšœ)™)Kšœ8™8Kšœ(™(Kšœ8™8KšœK™K—™šœ œœ˜KšœC˜CKš˜—šœœœ˜Kšœ)˜)Kšœ(˜(Kš˜šœ˜ Kšœ%˜%Kšœ+˜+Kšœ˜——Kšœ1˜1šœ œœ˜Kšœ œœ ˜#Kšœ(˜(KšœE˜Ešœ$œ˜3Kšœœ˜Kšœ˜—Kš˜—Kšœ ˜$Kšœ2˜2Kšœ6˜6Kšœ:˜:Kšœ=˜=Kšœ=˜=Kšœ=˜=Kšœ<˜Kšœ˜Kš˜—Kšœ*˜.KšœŸ˜—š  œœ˜K™&Kšœ Ÿ˜Kšœ&˜&Kšœœ/˜9Kšœ>˜>KšœG˜GKšœ4˜4š œœ˜Kšœœ˜3šœœ ˜ Kšœœ˜!KšœA˜AKšœ˜Kšœ4˜4Kšœ(˜(Kšœ˜Kšœ˜—K˜šœœ ˜ Kšœœ˜!KšœA˜AKšœ˜Kšœ/˜/Kšœ(˜(Kšœ˜Kšœ˜—K˜šœœ ˜ Kšœœ˜!KšœA˜AKšœ˜Kšœ/˜/Kšœ(˜(Kšœ˜Kšœ˜—K˜šœœ ˜ Kšœœ˜!KšœA˜AKšœ˜Kšœ/˜/Kšœ(˜(Kšœ˜Kš˜—Kšœ˜—Mš œœD˜RMšœI˜IKšœ;˜;K•StartOfExpansionI[self: ImagerInterpress.Ref, action: PROC [...], scale: REAL _ 1.0]šœ0Ÿ˜>Kšœ˜KšœŸ ˜—š  œœœ˜;K™&Kšœ Ÿ˜KšœD˜DKšœG˜Gš œœ˜Kšœœ˜9Kšœ˜Kšœ˜—Mš œœD˜RMšœI˜IKšœ ˜ K–I[self: ImagerInterpress.Ref, action: PROC [...], scale: REAL _ 1.0]šœ0Ÿ˜>Kšœ˜KšœŸ˜—š   œœœœ œ˜FK™FKšœœœ˜+K˜4Kšœœ˜-KšœN˜NKšœF˜FKšœ(˜(Kšœ4˜4šœœœ˜&š œœ˜,KšœG˜GKšœT˜TKšœŸ˜ —K˜1Kšœ˜—Kšœ œœ˜.KšœYœœ˜KšœŸ˜—š  œ˜)KšŸ-œ œœœ™[Kš œœœ„œœœ˜εKšœB˜BKšœŸ˜—Lšœ"™"Lšœ"™"Lšœ˜—…—: Rb