CLIM mail archive

[Prev][Next][Index][Thread]

arrows & your answer



Hi,
I`m working on Sun with Framz Allegro 4.01 and CLIM 1.0

You wrote that the following will work on SUN as draw-arrow:

(in-package :clim)
(define-graphics-operation draw-arrow (x1 y1 x2 y2
                                       &key (from-head nil) (to-head t)
                                            (head-length 10) (head-width 5))
  :arguments ((point x1 y1 x2 y2))
  :drawing-options :line-cap
  :method-body
    (with-transformed-arguments
      (let* ((dx (- x2 x1))
             (dy (- y2 y1))
             (norm (if (zerop dx)
                       (if (zerop dy) nil (/ 1.0 (abs dy)))
                       (if (zerop dy) (/ 1.0 (abs dx)) (/ (sqrt (+ (* dx dx) (* dy dy))))))))
        (when norm
          (let* ((length-norm (* head-length norm))
                 (ldx (* dx length-norm))
                 (ldy (* dy length-norm))
                 (base-norm (* head-width norm 0.5))
                 (bdx (* dy base-norm))
                 (bdy (* dx base-norm))
                 (ink (medium-ink stream))
                 (line-style (medium-line-style stream)))
            (draw-line-internal stream 0 0 x1 y1 x2 y2 ink line-style)
            (when from-head
              (let ((xa (+ x1 ldx)) (ya (+ y1 ldy)))
                (with-stack-list (points x1 y1 (+ xa bdx) (- ya bdy) (- xa bdx) (+ ya bdy))
                  (draw-polygon-internal stream 0 0 points t ink nil))
                (setq x1 xa y1 ya)))
            (when to-head
              (let ((xa (- x2 ldx)) (ya (- y2 ldy)))
                (with-stack-list (points x2 y2 (+ xa bdx) (- ya bdy) (- xa bdx) (+ ya bdy))
                  (draw-polygon-internal stream 0 0 points t ink nil)
                  (setq x2 xa y2 ya)))))))))

But what is (with-transformed-arguments ...). It seems that it doesn't work under CLIM 1.0
 
Ralph Hensel                            
German National Research Center for Computer Science (GMD-FIT.KI)
P.O. Box 1316, D-5205 Sankt Augustin, Germany
mail:hensel@gmdzi.gmd.de fax:+49-2241-14-2889 phone:+49-2241-14-1


Follow-Ups:

Main Index | Thread Index