Copyright (C) 1994, Digital Equipment Corp.
INTERFACE RPCVBT;
IMPORT VBTProvider, RPC, Axis, Rect, Word, VBT, BatchUtil;
TYPE
Child = OBJECT METHODS
getCursor(): ScrnCursorT;
axisOrder(): Axis.T;
read
write
discard
shape
prod(READONLY ev: Event; startMessenger: BOOLEAN);
END;
Parent = OBJECT METHODS
setcage(READONLY cage: VBT.Cage; seqno: Word.T);
setcursor(cs: ScrnCursorT);
paint(
READONLY batch: ARRAY OF Word.T;
READONLY clip, scrollSource: Rect.T;
clipState: BatchUtil.ClipState;
seqno: Word.T);
sync
readUp
writeUp
capture
screenOf
newShape
acquire
release
put
forge
paintAndGet(
READONLY batch: ARRAY OF Word.T;
READONLY clip, scrollSource: Rect.T;
clipState: BatchUtil.ClipState;
READONLY cage: VBT.Cage;
seqno: Word.T): Event
RAISES {Thread.Alerted, RPC.CallFailed};
setCageAndPaint(
READONLY batch: ARRAY OF Word.T;
READONLY clip, scrollSource: Rect.T;
clipState: BatchUtil.ClipState;
READONLY cage: VBT.Cage;
seqno: Word.T) RAISES {Thread.Alerted, RPC.CallFailed};
setCageAndGet(READONLY cage: VBT.Cage; seqno: Word.T): Event
RAISES {Thread.Alerted, RPC.CallFailed};
getScreenType
getBadRegion
END;
Connection = OBJECT METHODS
apply(t: TEXT; prnt: Parent): Child
RAISES {VBTProvider.Error, RPC.CallFailed}
<* LL = parent address space VBT.mu *>
END;
TYPE
Event = RECORD
type: EventType;
whatButtonChanged: VBT.Button;
time: VBT.TimeStamp;
cp: VBT.CursorPosition;
modifiers: VBT.Modifiers;
clickType: VBT.ClickType;
clickCount: INTEGER;
new, saved, badRect: Rect.T;
badRegionIsRect: BOOLEAN;
marked: BOOLEAN;
miscType: VBT.MiscCodeType;
detail: VBT.MiscCodeDetail;
selection: VBT.SelectionOrNil;
whatKeyChanged: VBT.KeySym;
wentDown: BOOLEAN;
END;
EventType = {None, Mouse, Position, Redisplay, Reshape, Rescreen,
Repaint, Misc, Key}
An Event
e
represents the forwarding from parent to child of
call to the VBT down method e.type
, unless type
is None
, in
which case the event directs the child address space to kill its
messenger thread. Only a subset of the remaining fields are
relevant, as determined by the VBT
interface; for example, in a
Position
event, only the cp
, time
, and modifiers
fields are
relevant. The whatChanged
fields of Button and Key events have
been renamed into whatButtonChanged and whatKeyChanged, since they
have different types. In a Repaint
event, the whole bad region
is not transferred: instead the rectangle badRect
is the bounding
box of the bad region, and the boolean badRegionIsRect
is TRUE
if the badRegion equals the badRect. The prev
field of a
Rescreen
or Reshape
event is not transferred, since it equals
the child's domain. The new screentype is not transferred with a
Rescreen
event; instead, the child calls the parent's getScreenType
method to respond to the event.
REVEAL VBTProvider.Remote = BRANDED OBJECT METHODS
connect(): Connection
END;
END RPCVBT.