DragAnObject is very similar to DragASprite in that it allows a graphic to be dragged around the screen in place of the pointer. It differs by allowing an arbitrary graphic as opposed to just a sprite to be dragged. This is achieved by calling a renderer. The current implementation calls this renderer twice so that a (possibly irregular) mask can be built on the fly. This makes it possible to drag icons (using Wimp_PlotIcon as a renderer), Toolbox gadgets, or even Draw objects.