DIRECTORY ImagerBrick USING [Brick], ImagerPixel USING [PixelBuffer], ImagerSample USING [Function, SampleMap]; PrintColor: CEDAR DEFINITIONS ~ BEGIN LogicalDevice: TYPE ~ CARDINAL; Toner: TYPE ~ MACHINE DEPENDENT {black, cyan, magenta, yellow, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15}; FalseBool: TYPE ~ BOOL ¬ FALSE; TonerUniverse: TYPE ~ PACKED ARRAY Toner OF FalseBool; PrintSpecialColorData: TYPE ~ REF PrintSpecialColorDataRep; PrintSpecialColorDataRep: TYPE ~ RECORD [ SEQUENCE size: NAT OF LogicalDeviceColorData ]; LogicalDeviceColorData: TYPE ~ REF LogicalDeviceColorDataRep; LogicalDeviceColorDataRep: TYPE ~ RECORD [ logicalDevice: CARDINAL, -- device code of appropriate device tonerUniverse: TonerUniverse, behaviors: LIST OF BehaviorForSeparation ]; Ink: TYPE ~ {nop, remove, set}; BehaviorForSeparation: TYPE ~ REF BehaviorForSeparationRep; BehaviorForSeparationRep: TYPE ~ RECORD [ toner: Toner, v: SELECT type: * FROM constant => [ink: Ink], fraction => [f: REAL], -- fraction of ink in [0.0..1.0], using the brick for this separation tile => [ tileBits: ImagerSample.SampleMap ¬ NIL, tilePhase: NAT, function: ImagerSample.Function -- The only functions that are guaranteed to work for all implementations are [null, null] and [or, null] ], ENDCASE ]; ColorCorrection: TYPE ~ REF ColorCorrectionRep; ColorCorrectionRep: TYPE ~ RECORD [ type: ATOM, correctionProc: CorrectionProc, maxSampleIn: ARRAY [0..3) OF CARDINAL, -- for red, green, blue, respectively samplesPerPixelOut: NAT, -- 1=black, 3=cmy, 4=cmyk data: REF ]; CorrectionProc: TYPE ~ PROC [self: ColorCorrection, pixelsOut: ImagerPixel.PixelBuffer, maxSampleOut: ARRAY [0..4) OF CARDINAL, rgbIn: ImagerPixel.PixelBuffer]; HalftoneProperties: TYPE ~ LIST OF HalftonePropertiesForSeparation; HalftonePropertiesForSeparation: TYPE ~ RECORD [type: ATOM, toner: Toner, brick: ImagerBrick.Brick]; END. ώ PrintColor.mesa Copyright Σ 1987, 1991 by Xerox Corporation. All rights reserved. Michael Plass, October 26, 1991 10:14 pm PDT This interface defines the data structures used to communicate device-dependent printer color specifications to the printer Imager implementations. This is a code that specifies the particular logical device; there may be multiple logical devices for each physical device, differing only in the way they treat color, i.e., color Versatec vs. black-and-white Versatec. Special Colors An ImagerColor.SpecialColor for a printer has type=$PrintColor and data of type PrintSpecialColorData A vector of Special Color specifications for the various logical devices; should have printSpecialColorData[d].logicalDevice = d, provided the left hand side is defined. nop is a no-operation for this separation remove removes ink from this separation set adds ink to this separation Color Correction These types are used to specify a color correction method. The interpretation of pixelsOut depends on the value of self.samplesPerPixelOut: 1 => black, 3 => CMY, 4 => CMYK. A sample value of 0 means no ink, and a sample value of maxSampleOut means full ink Halftone Specifications The type distingishes classes of bricks for various kinds of color. Κ(–(cedarcode) style•NewlineDelimiter ™šœ™Icodešœ Οeœ7™B™,K™—K™“J™—šΟk ˜ Kšœ žœ ˜Kšœ žœ˜ Kšœ žœ˜)—K˜KšΠln œžœž ˜šœž˜K˜šœžœžœ˜K™ΫK˜—šœžœžœž œV˜uK™—Kšœ žœžœžœ˜Kšœžœž œžœ ˜6—head™šœe™eK˜—Kšœžœžœ˜;šœžœžœ˜)Kšžœžœžœ˜,Kšœ˜Kšœ©™©K˜—Kšœžœžœ˜=šœžœžœ˜*KšœžœΟc$˜>Kšœ˜Kšœ žœžœ˜(Kšœ˜K˜—šœžœ˜K™)Kšœ'™'Kšœ™K˜—Kšœžœžœ˜;šœžœžœ˜)K˜ šœžœ ž˜Kšœ˜Kšœžœ E˜]šœ ˜ Kšœ#žœ˜'Kšœ žœ˜Kšœ! i˜ŠKšœ˜—Kšž˜—Kšœ˜——šœ™™:K˜—Kšœžœžœ˜/šœžœžœ˜#Kšœžœ˜ Kšœ˜Kšœ žœžœžœ %˜LKšœžœ ˜2Kšœž˜ Kšœ˜K˜—š œžœžœKžœžœžœ"˜ KšœΖ™Ζ——šœ™Kšœžœžœžœ!˜Cšœ!žœžœžœ*˜dK™CK™——Kšžœ˜K˜—…—n”