(LWW) variable thickness line-pinboard-objects
Unable to parse email body. Email id is 9442
Unable to parse email body. Email id is 9442
On Tue, Oct 6, 2009 at 9:26 AM, Nick Levine <ndl@ravenbrook.com> wrote:
> I want my line-pinboard-objects (one pixel thick by default) to be
> drawn thicker (3 pixels) when they're "selected".
>
> If they're on a slant this just works, and if they're
> arrow-pinboard-objects it just works. But I can't get horizontal /
> vertical lines without an arrow to draw more than 2 pixels thick.
>
> Testing this with a vertical line, I noticed that the width reported
> by capi:pinboard-pane-size was 1. OK, so I set that to 3. But now the
> line was no longer vertical: start-x was 2 greater than it had been
> before. OK, so I used capi:move-line to put start-x back to its
> original value. But doing that reset the width to 1 and I was back to
> where I'd started.
The following code on LWW seems to make line-pinboard-objects thicker
and thinner, and I don't have to do any manual adjustment of the
pane's width.
(let ((pane (capi:contain (make-instance 'capi:pinboard-layout)))
(line (make-instance 'capi:line-pinboard-object
:start-x 10
:start-y 10
:end-x 10
:end-y 100
:graphics-args (list :thickness 4))))
(labels
((%toggle ()
(setf (capi:pinboard-object-graphics-arg line :thickness)
(abs (- (capi:pinboard-object-graphics-arg line :thickness) 5)))
(capi:redraw-pinboard-object line t))
(toggle ()
(capi:apply-in-pane-process pane #'%toggle))
(status ()
(capi:display-message-for-pane
pane "~A" (multiple-value-list
(capi:line-pinboard-object-coordinates line)))))
(capi:manipulate-pinboard pane line :add-top)
(status)
(sleep 3) (toggle) (status)
(sleep 3) (toggle) (status)))
--
=====================
Joshua Taylor
tayloj@cs.rpi.edu, jtaylor@alum.rpi.edu
"A lot of good things went down one time,
back in the goodle days."
John Hartford
Unable to parse email body. Email id is 9445