Oh, you want a retained mode graphics system. That should be pretty easy to write yourself.
Just write a class like TDrawable with a Paint(), HitTest(Point), and Intersects(Rect) methods and derive from that to have your different drawn types. Keep a list of those items in your drawing surface. Call HitTest(MousePoint) when the mouse moves over the drawing area and track the hot/pressed/captured item. When you surface needs to be painted, loop through the list and if DrawableItem.Intersects(DirectRect) then DrawableItem.Paint(). I don't think you'll find a ready made system to accommodate all your drawing needs.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal