[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
In article <95Jan26.email@example.com>,
firstname.lastname@example.org (Mark A. Tapia) wrote:
|On Thu Jan 26, Richard Lynch asks:
| Given a pict that was formed with, say:
| (* ...code to generate a picture and store it in pict *)
| I need a function that will return non-NIL for those pixels actually
| covered by the rectangle, but NIL for those points inside the rectangle.
| ie, (point-in-pict-p pict #@(12 12)) --> T [or any non-NIL]
| (point-in-pict-p pict #@(24 24)) --> NIL
| Is there some easy way to do this?
|Here's the function point-in-pict-p. Obviously, the function can be
|protected by checking to see whether the picture is really a picture.
|Here's the code that does what you want, I haven't tested it.
|(unless (fboundp 'ccl::valid-picture)
| (defun ccl::valid-picture (the-picture)
| (and (macptrp the-picture) (handlep the-picture) the-picture))
| (export 'ccl::valid-picture :ccl))
|(defun point-in-picture-p (picture h &optional v)
| (when (valid-picture picture)
| (rlet ((r :rect :topLeft (rref picture :picture.picframe.TopLeft)
| :bottomRight (rref picture
| (point-in-rect-p r point)))
Nah, that's the easy part. The question remains: How do I test that a
PICT is going to actively CHANGE a given pixel color. eg, #_FrameRect
does *NOT* alter the pixels in the interior of the given rectangle. I
want a hit test that only includes those pixels QuickDraw has actually
-- "TANSTAAFL" Rich email@example.com