How to drive DragASprite How to do a drag ---------------- 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. The Swis -------- 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 2-3 Vertical location of sprite in box: 00 Bottom 01 Centre 10 Top 11 4-5 Drag bounding box is: 00 Whole screen 01 Display area of window that the pointer's over 10 User specified 11 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^ r3 = Pointer to 16-byte block containing box: 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: All registers preserved. 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: -