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 arear2 = sprite name^
Offset Use 0 x0 4 y0 8 x1 12 y1r4 = Pointer to optional (see flags) 16-byte block containing bounding box:
Offset Use 0 x0 4 y0 8 x1 12 y1Out:
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:
-