Entry
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 use DragASprite even if CMOS flag isnt set
9-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 R1<>0 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.
Note that if you want to have the simplest form of drag, with the bounding box being the entire screen and using a rotating dash-box rather than a sprite for the drag, then you can simply set R0=R1=0, and not worry about R4 and R5.
Provided by Icons
|
|
|