changeset 48:a948ac563f6f

Graph: draw the vertex being dragged above others.
author Mikhail Kryshen <mikhail@kryshen.net>
date Wed, 28 Jul 2010 04:47:30 +0400
parents 180d7690d09a
children ca728127d605
files src/kryshen/indyvon/graph.clj
diffstat 1 files changed, 20 insertions(+), 11 deletions(-) [+]
line diff
     1.1 --- a/src/kryshen/indyvon/graph.clj	Wed Jul 28 04:46:34 2010 +0400
     1.2 +++ b/src/kryshen/indyvon/graph.clj	Wed Jul 28 04:47:30 2010 +0400
     1.3 @@ -33,15 +33,14 @@
     1.4    (doseq [v (.vertices (.getGraph layout))]
     1.5      (draw-anchored! v :center :center (+ x (.getX v)) (+ y (.getY v)))))
     1.6  
     1.7 -(defn- draw-movable-vertices!
     1.8 -  [^GraphLayout layout x y dragged fix-x fix-y]
     1.9 -  (doseq [v (.vertices (.getGraph layout))]
    1.10 -    (let [x (+ x (.getX v))
    1.11 -          y (+ y (.getY v))
    1.12 -          anchor (anchor v :center :center)
    1.13 -          size (layer-size v)
    1.14 -          x (- x (:x anchor))
    1.15 -          y (- y (:y anchor))]
    1.16 +(defn- draw-movable-vertex!
    1.17 +  [^Vertex2D v ^GraphLayout layout x y dragged fix-x fix-y]
    1.18 +  (let [x (+ x (.getX v))
    1.19 +        y (+ y (.getY v))
    1.20 +        anchor (anchor v :center :center)
    1.21 +        size (layer-size v)
    1.22 +        x (- x (:x anchor))
    1.23 +        y (- y (:y anchor))]
    1.24      (with-bounds x y (:width size) (:height size)
    1.25        (with-handlers v
    1.26          (draw! v)
    1.27 @@ -65,8 +64,18 @@
    1.28                   (.invalidateLayout layout)
    1.29                   (*update*)
    1.30                   (ref-set fix-x x)
    1.31 -                 (ref-set fix-y y)))))))))))
    1.32 -
    1.33 +                 (ref-set fix-y y))))))))))
    1.34 +  
    1.35 +(defn- draw-movable-vertices!
    1.36 +  [^GraphLayout layout x y dragged-ref fix-x fix-y]
    1.37 +  (let [dragged @dragged-ref]
    1.38 +    (doseq [v (.vertices (.getGraph layout))
    1.39 +            :when (not= v dragged)]
    1.40 +      (draw-movable-vertex! v layout x y dragged-ref fix-x fix-y))
    1.41 +    ;; Draw the vertex being dragged above others.
    1.42 +    (when dragged
    1.43 +      (draw-movable-vertex! dragged layout x y dragged-ref fix-x fix-y))))
    1.44 +    
    1.45  (defn- draw-edges! [^GraphLayout layout x y]
    1.46    ;; TODO: extend Layer on Edge2D and draw like vertices.
    1.47    (.translate *graphics* x y)