Copyright (C) 1994, Digital Equipment Corp.
by Steve Glassman, Mark Manasse and Greg Nelson
<*PRAGMA LL*>A
ScrnCursor.T is a handle on a cursor shape that is valid for some
particular screentype, called the {\it owner} of the handle. Some
handles have names; others are anonymous. A named handle is valid
forever. The cursor referenced by an anonymous handle will be
garbage-collected when all handles to it have been dropped.
INTERFACESee theScrnCursor ; IMPORT TrestleComm, Cursor; EXCEPTION Failure; VAR DontCare: T; TYPE Raw = Cursor.Raw;
Cursor interface for the raw representation of a cursor
shape as a pair of bitmaps, color information, and hotspot offset.
\subsubsection{Obtaining handles from the oracle}
TYPE
Oracle = Private OBJECT (*CONST*)
width, height: INTEGER;
METHODS
<* LL.sup <= VBT.mu *>
load(READONLY r: Raw; nm: TEXT := NIL): T
RAISES {TrestleComm.Failure};
list(pat: TEXT; maxResults: CARDINAL := 1)
: REF ARRAY OF TEXT
RAISES {TrestleComm.Failure};
lookup(name: TEXT): T RAISES {TrestleComm.Failure};
builtIn(cs: Cursor.Predefined): T;
END;
Private <: ROOT;
For a screentype st, the field st.cursor is an Oracle that
produces cursors owned by st:
The integers st.cursor.width and st.cursor.height are the
dimensions in pixels of the largest cursor image that the screentype st
supports. Larger images will be cropped; smaller images will be padded.
The method call
st.cursor.load(r, nm)
allocates and returns a cursor handle c owned by st whose
contents are equal to r. If nm # NIL, c receives the name
nm, and any cursor handle owned by st that previously had the
name nm becomes anonymous.
The method call
st.cursor.list(pat, maxResults)
returns the names of all cursors owned by st that match the pattern
pat. The list of results may be truncated to length maxResults.
A * matches any number of characters and a ? matches a single
character.
The method call
st.cursor.lookup(name)
return the cursor handle owned by st with the given name, or NIL
if no cursor has this name.
The method call
st.cursor.builtIn(cs)
returns the screen-dependent cursor valid for st that corresponds
to the predefined screen-independent cursor Cursor.T{cs} .
The locking level for all methods is LL.sup <= VBT.mu.
\subsubsection{The handle object}
TYPE
T <: Public;
Public = OBJECT (*CONST*)
id: INTEGER
METHODS
<* LL.sup <= VBT.mu *>
localize(): Raw
RAISES {TrestleComm.Failure, Failure};
unload() RAISES {TrestleComm.Failure};
END;
If cs is a ScrnCursor.T, then cs.id is an identifier whose
interpretation depends on the screentype that owns cs. The method
call cs.localize() returns a raw cursor equal to the one on which
cs is a handle, and the method call cs.unload() causes cs
to become anonymous.
END ScrnCursor.