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
DIRECTORY
ImagerSample, SF, Xl, XlBitmap, XlBitmapWindow;
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.
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
--big number because for this X request, execution should be faster then transmission...
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
--in=out means buffer empty
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
no windowClipBox yet...
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.