How to drive DragASprite
i) Prepare a sprite to be dragged (this may be trivial as the application may
have a suitable sprite already to hand).
ii) Perform a DragASprite_Start. This takes a copy of your sprite (so you can
dispose of your copy whenever you like) and starts a Wimp drag.
iii) When the Wimp sends you an indication that your drag has finished do
a DragASprite_Stop which will release the workspace necessary for
doing a drag-a-sprite.
DragASprite_Start (0x42400)
This Swi starts dragging a sprite. The sprite you supply is copied, so there
is no problem with you disposing of your copy of the sprite.
In:
r0 = flags:
Bits Meaning
0-1 Horizontal location of sprite in box:
00 Left
01 Centre
10 Right
11 <undefined>
2-3 Vertical location of sprite in box:
00 Bottom
01 Centre
10 Top
11 <undefined>
4-5 Drag bounding box is:
00 Whole screen
01 Display area of window that the pointer's over
10 User specified
11 <undefined>
6 Bounding box applies to:
0 The box
1 The pointer
7 Control of drop-shadow:
0 Don't do a drop-shadow
1 Make a drop shadow when copying the sprite
8-31 Reserved for future use, should be set to 0.
r1 = sprite area:
0 System sprite area
1 Wimp sprite area
other Address of sprite area
r2 = sprite name^
Offset Use
0 x0
4 y0
8 x1
12 y1
r4 = Pointer to optional (see flags) 16-byte block containing bounding box:
Offset Use
0 x0
4 y0
8 x1
12 y1
Out:DragASprite_Stop (0x42401)
This Swi terminates any current drag operation and releases any
drag-a-sprite workspace claimed to do a drag. It is expected that this Swi
will be called when the user_drag_box reason is received by the application.
In:
-
Out:
-