DIRECTORY Space USING [Handle], ImagerMasks USING [Mask], ImagerBasic USING [IntRectangle, IntPair, Transformation, CIEColor, Color], Imager USING [Context]; ImagerDisplay: CEDAR DEFINITIONS ~ BEGIN OPEN ImagerBasic; Direction: TYPE ~ {none, left, right, up, down, upLeft, downLeft, upRight, downRight}; ByteSequence: TYPE ~ REF ByteSequenceRep; ByteSequenceRep: TYPE ~ RECORD [PACKED SEQUENCE COMPUTED CARDINAL OF [0..256)]; Vertex: TYPE ~ RECORD [ x, y: CARDINAL, pxlValue: LONG CARDINAL]; VtxSequence: TYPE ~ REF VtxSequenceRep; VtxSequenceRep: TYPE ~ RECORD [SEQUENCE length: CARDINAL OF Vertex]; Mask: TYPE ~ ImagerMasks.Mask; ImagingSpace: TYPE ~ { client, viewer, device }; Transformation: TYPE ~ ImagerBasic.Transformation; Context: TYPE ~ Imager.Context; ContextData: TYPE ~ REF ContextDataRep; -- Holds the imager state ContextDataRep: TYPE ~ RECORD [ currentColor: ImagerBasic.Color, currentPxlValue: LONG CARDINAL, currentPosition: ImagerBasic.IntPair, -- CP kept in device space -- ********* Transformations ************ clientTransform: ImagerBasic.Transformation, viewerTransform: ImagerBasic.Transformation, deviceTransform: ImagerBasic.Transformation, transform: ImagerBasic.Transformation, -- ***************** Clipping *********** clientClipper: Mask, -- clippers kept in device space viewerClipper: Mask, deviceClipper: Mask, clipper: Mask, -- composite clipper noClip: BOOLEAN _ FALSE, deviceProcs: REF ImagerDisplay.DisplayClassRep, -- Device-dependent procedures wordsPerLine: CARDINAL, pxlBase: LONG POINTER, -- Access to image bits storage: Space.Handle, -- Handle for allocated storage for image bits data: REF ANY -- Interpretation of this depends on the procs ]; NewDisplay: PROC [context: Context, deviceType: ATOM]; RegisterDisplayDevice: PUBLIC PROC [class: REF DisplayClassRep]; SetViewerTransform: PROC [context: Context, transform: Transformation]; ConcatToViewerTransform: PROC [context: Context, transform: Transformation]; SetDeviceTransform: PROC [context: Context, transform: Transformation]; SetViewerClipper: PROC [context: Context, outline: IntRectangle]; ClipViewerClipper: PROC [context: Context, outline: IntRectangle]; SetDeviceClipper: PROC [context: Context, outline: IntRectangle]; HighlightIntRectangle: PROC[context: Context, area: IntRectangle]; MoveIntRectangle: PROC [context: Context, source: IntRectangle, destination: IntPair]; SetStipplePattern: PROC[context: Context, bitsWide, bitsHigh: NAT, bits: REF ANY]; NegateXOR: PROC[context: Context]; -- set XORing to opposite state DisplayClassRep: TYPE ~ RECORD[ deviceType: ATOM, SetUp: PROC [displayContext: ContextData, pin: BOOLEAN _ TRUE, box: Mask], ShutDown: PROC [displayContext: ContextData], ColortoPixel: PROC [color: CIEColor] RETURNS [LONG CARDINAL], PixeltoColor: PROC [pxlValue: LONG CARDINAL] RETURNS [CIEColor], HilitePxls: PROC [area: IntRectangle], MovePxls: PROC [context: ContextData, source: IntRectangle, destination: IntPair], TransferPxls: PROC [source, destination: ContextData], StoreScanSeg: PROC [source: ContextData, x, y, length: CARDINAL] RETURNS [ByteSequence], LoadScanSeg: PROC [destination: ContextData, x, y, length: CARDINAL, segment: ByteSequence], LoadTrapezoid: PROC [destination: ContextData, top, bottom, leftTop, leftBot, rightTop, rightBot: CARDINAL, pxlValue: LONG CARDINAL], LoadRectangle: PROC [destination: ContextData, area: ImagerBasic.IntRectangle, pxlValue: LONG CARDINAL], SetAnyPixel: PROC [destination: ContextData, x, y: CARDINAL, pxlValue: LONG CARDINAL, newDirection: Direction _ none], GetAnyPixel: PROC [source: ContextData, x, y: CARDINAL, newDirection: Direction _ none] RETURNS [LONG CARDINAL], SetNextPixel: PROC [pxlValue: LONG CARDINAL], GetNextPixel: PROC [] RETURNS [LONG CARDINAL], DrawLine: PROC [destination: ContextData, a, b: IntPair, pxlValue: LONG CARDINAL], Tiler: PROC [destination: ContextData, vtxCount: NAT, vertices: VtxSequence] ]; END. XImagerDisplay.mesa This interface provides the procedures and data structures for use with interactive displays Last Edited by: Crow, September 1, 1983 3:20 pm Basic Definitions (Numbers and Shapes) Context (Implemented in ImagerDisplayContextImpl) Get new display without changing anything above the device level Device Transformations (Implemented in ImagerDisplayTransformImpl) fast for setting common types of flips and rotates Clipping (Implemented in ImagerDisplayClipperImpl) Fonts Color Paths Masks Characters Interactive (Implemented in ImagerDisplayInteractiveImpl) Class Κ˜headšœ™J™\J™šœ™Jšœ™—unitšΟk ˜ Lšœœ ˜Iašœ œ˜Mšœ œ:˜KJšœœ ˜——head2šœœ ˜ Jšœ œ ˜J˜—head3šΟb&™&Lšœ œG˜VJšœœœ˜)Jšœœœœœœœœ ˜OJš œœœ œ œœ˜AJšœ œœ˜'Jš œœœœ œœ ˜D—šž4™4Jšœœ˜Jšœœ˜1Jšœœ˜2Jšœ œ˜Lšœ œœΟc˜Bšœœœ˜Jšœ ˜ Jšœœœ˜Jšœ+Ÿ˜ELšŸ,˜,Jšœœ œ˜,Jšœœ˜,Jšœœ˜,Jšœ œ˜&—šŸ5˜5JšœŸ!˜9Jšœ˜Jšœ˜JšœŸœŸ˜,JšœœœŸ˜Mšœ œ$Ÿ˜SJšœœ œœŸ˜GJšœŸ.˜KJšœœŸ7˜DJ˜—LšΟi@™@MšΟn œœ œ˜6Mš‘œœœ œ˜@—Ošž™šž=™=š‘œœ/˜GJ™2—Jš‘œœ.˜LJš‘œœ/˜G—šž5™5Jš‘œœ+˜AJš‘œœ+˜BJš‘œœ+˜A—Ošž™Ošž™Ošž™Ošž™Ošž ™ šž;™;Jš‘œœ'˜BLš‘œœ@˜VLš ‘œœ'œœœ˜Rš‘ œœŸ˜BJ™——šž™šœœœ˜Jšœ œ˜Jš‘œœ$œœ ˜KJš‘œœ%˜3Jš ‘ œœœœœ˜>Jš ‘ œœ œœœ ˜@Jš‘ œœ˜&Jš‘œœD˜RJš‘ œœ$˜6Jš‘ œœ%œ˜AJšœœ˜*Jš‘ œœ*œ˜EJšœ,˜,Jš‘ œœ˜/Jšœ<œ˜EMšœœœ˜"Mš‘ œœ;˜NMšœœœ˜!Jš‘ œœ"œ˜