R0 = flags:
0-1 Horizontal position:
00 = left
01 = middle
10 = right
11 = undefined
2-3 Vertical position:
00 = bottom
01 = middle
10 = top
11 = undefined
4-5 Mouse bounding box:
00 = whole screen
01 = constrain to parent window
10 = constrain to box pointed to by R5
11 = undefined
6 constrain sprite if set, otherwise constrain pointer
7 shadow if set
8-31 reserved; MUST BE 0
R1 = pointer to sprite block, +1 for Wimp sprite area, 0 to use dash box
R2 = Window handle
R3 = Icon handle
R4 = pointer to sprite name (if R1<>0)
R5 = pointer to mouse bounding box (only if necessary - see flags)
+00 xmin
+04 ymin
+08 xmax
+12 ymax
This SWI does one of two things. If the DragASprite module is loaded, and
bit 1 of byte 28 of the CMOS RAM is set, and R10 then it will use the
DragASprite module as follows:
Work out the parameters to 'DragASprite_Start' and call it. If this
produces an error then try again with dash box as described below.
Otherwise it makes an ordinary rotating dash box as follows:
Work out the parameters to 'Wimp_DragBox' and call it. Bits 0-3 and 7 of
the flags are ignored.
If you are using this SWI at any time with R1<>0 then remember to call
XDragASprite_Stop at appropriate points. You MUST use the X form of the SWI,
and you must ignore errors.
|
|
|