   (let [^ZoomInteraction zoom-obj (ZoomInteraction. scene)]
     (proxy [GInteraction] []
       (event [^GScene scn, evt, x, y]
-	(.event zoom-obj scn evt x y)
-	(when (and scn
+        (.event zoom-obj scn evt x y)
+        (when (and scn
                    (or (= evt GWindow/BUTTON1_UP)
                        (= evt GWindow/BUTTON2_UP)
                        (= evt GWindow/BUTTON3_UP)))
-	  (call-scene-hook scn :zoom)
-	  (call-scene-hook scn :image-changed))))))
+          (call-scene-hook scn :zoom)
+          (call-scene-hook scn :image-changed))))))
 
 ;;;
 

(defn- create-two-halfcircles
  "Creates points for two half circles, lower circle points first."
  [x y radius]
  (let [x (double x),
	y (double y),
	radius (double radius),
	samples 100,
	angle (/ Math/PI samples),
	[upper-points, lower-points] (loop [current-angle (double (- (/ Math/PI 2.0))),
					    acc-samples 0,
					    upper-points [],
					    lower-points []]
				       (if (> acc-samples samples)
					 [upper-points, lower-points]
					 (let [new-x (+ x (* radius (Math/sin current-angle))),
					       new-y (+ y (* radius (Math/cos current-angle)))]
					   (recur (double (+ current-angle angle))
						  (inc acc-samples)
						  (conj upper-points new-x new-y)
						  (conj lower-points new-x (+ y y (- new-y)))))))]
    [(into-array Double/TYPE lower-points), (into-array Double/TYPE upper-points)]))

(defvar default-node-radius 5.0

  upper neighbors or under some of its lower neighbors."
  [^GObject node, dx, dy]
  (let [[x y] (position node),
        ;; make sure nodes don't go too far
        max-y (height-of-upper-neighbors node),
        min-y (height-of-lower-neighbors node),
        dy    (if max-y (min dy (- max-y y)) dy),
        dy    (if min-y (max dy (- min-y y)) dy)]
    (move-node-unchecked-to node (+ x dx) (+ y dy))))


