DIRECTORY ImagerSample, SF, Xl, XlBitmap, XlBitmapWindow; XlBitmapWindowPrivate: CEDAR DEFINITIONS ~ BEGIN emptyBox: SF.Box ~ [min: SF.maxVec, max: SF.minVec]; buffSize: NAT = 64; --power of 2 to avoid bounds checking and speed up MOD BuffIndex: TYPE = [0..buffSize); ImplRec: TYPE = MONITORED RECORD [ atomic: Atomic, visible: BOOL ¬ FALSE, --conservative: in doubt TRUE hasWindow: BOOL ¬ FALSE, --monitored mapped: BOOL ¬ FALSE, --monitored hasBitmap: BOOL ¬ FALSE, --monitored onServerLimit: INT ¬ 48, --number of requests sent to server before a roundtrip is requested onServer: INT ¬ 0, --hint; how many request are buffered on server painterProcessRunning: BOOL ¬ FALSE, --monitored mustNotifyBufferEmpty: INT ¬ 0, bufferEmpty: CONDITION, doingShortPause: BOOL ¬ FALSE, shortPause: CONDITION, fLeniance: INTEGER ¬ 16, --need not be atomic softClipBox: SF.Box ¬ emptyBox, --soft because not atomically unfinishedBox: SF.Box ¬ emptyBox, thisUnfinishedKey, lastUnfinishedKey: INT32 ¬ 0, --modular arithmetic report: LIST OF REF ReportRec ¬ NIL, in: BuffIndex ¬ 0, --next buffer location to be used by producer; monitored out: BuffIndex ¬ 0, --next buffer location to be used by consumer; monitored buffer: ARRAY BuffIndex OF SF.Box, --monitored interceptedBitmap: XlBitmap.Bitmap ¬ NIL, --monitored pixmapAndConnection: REF PixmapAndConnection ¬ NIL, --monitored extraRefForDebugging: REF ¬ NIL ]; ReportRec: TYPE = RECORD [proc: PROC[SF.Box, REF], data: REF]; Atomic: TYPE = REF AtomicRec; AtomicRec: TYPE = RECORD [ conn: Xl.Connection ¬ NIL, window: Xl.Window ¬ Xl.nullWindow, hasShmC: BOOL ¬ FALSE, --associated connection supports shm hasShmB: BOOL ¬ FALSE, --associated bitmap supports shm useShm: BOOL ¬ FALSE, useCopyPlane: BOOL ¬ FALSE, --valid only if useShm shmPixmap: Xl.Pixmap ¬ Xl.nullPixmap, origin: Xl.Point ¬ [0, 0], gc: Xl.GContext ¬ NIL, bytesPerLine: INT, base: LONG POINTER, sm: ImagerSample.RasterSampleMap, bm: XlBitmap.Bitmap, bitsPerPixel: NAT ¬ 1, bugCompensator: NAT ¬ 32, bmClipBox: SF.Box ¬ emptyBox, --clipping due to bitmap size windowAlive: BOOL ¬ TRUE, lastSeq: Xl.SequenceNo ¬ 0, extraGCForDebugging: Xl.GContext ¬ NIL, extraRefForDebugging: REF ¬ NIL ]; PixmapAndConnection: TYPE = RECORD [ p: Xl.Pixmap ¬ Xl.nullPixmap, c: Xl.Connection ¬ NIL ]; END. $XlBitmapWindowPrivate.mesa Copyright Σ 1990, 1991 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, December 14, 1990 11:53:16 am PST Christian Jacobi, August 21, 1992 4:17 pm PDT This is a very private internal interface for XlBitmapWindowImpl. Its purpose is to be able to change XlBitmapWindowImpl without producing a type clash on exported opaque types while debugging. --big number because for this X request, execution should be faster then transmission... --in=out means buffer empty no windowClipBox yet... Κ’–(cedarcode) style•NewlineDelimiter ˜™Icodešœ Οeœ7™BK™>K™-K™—šΟk ˜ Kšœžœ˜/—K˜Kšœ Οb œ+™AK™K˜KšΟnœžœž ˜(Kšœž˜K˜Kšœ žœ žœžœ ˜4K˜Kšœ žœΟc6˜JKšœ žœ˜ K˜šœ žœž œžœ˜"K˜Kšœ žœžœ‘˜4Kšœ žœžœ‘ ˜$Kšœžœžœ‘ ˜!Kšœ žœžœ‘ ˜$šœžœ‘C˜\J™X—Kšœ žœ‘/˜BKšœžœžœ‘ ˜0Kšœžœ˜Kšœ ž œ˜Kšœžœžœ˜Kšœ ž œ˜Kšœ žœ‘˜-Kšœ žœ‘˜=Kšœžœ˜!Kšœ&žœ‘˜EKš œžœžœžœ žœ˜$Kšœ‘%Πbc‘ ˜Mšœ‘%’‘ ˜LK™—Kšœžœ žœžœ‘ ˜.Kšœ%žœ‘ ˜5Kšœžœžœ‘ ˜?Kšœžœž˜K˜K˜—Kš œ žœžœžœžœžœ žœ˜>K˜Kšœžœžœ ˜šœ žœžœ˜Kšœžœ˜Kšœ"˜"Kšœ žœžœ‘$˜;Kšœ žœžœ‘ ˜7Kšœžœžœ˜Kšœžœžœ‘˜3Kšœ%˜%Kšœ˜Kšœžœ˜Kšœžœ˜Kšœžœžœ˜K˜!K˜Kšœžœ˜Kšœžœ˜Kšœ žœ‘˜;Jšœ™Kšœ žœžœ˜J™Kšœ˜J™Kšœ#žœ˜'Kšœžœž˜K˜—K˜šœžœžœ˜$K˜Kšœž˜K˜K˜—Kšžœ˜K˜K˜—…— Μ