(define-generic raise-vertex)
(define-generic raise-edge)
(define-generic lower-vertex)
(define-generic lower-edge)

(define-method raise-vertex ((v <vertex-item>))
        (raise (slot-ref v 'oval-item))
        (raise (slot-ref v 'txt-item)))

(define-method lower-vertex ((v <vertex-item>))
        (raise (slot-ref v 'oval-item))
        (raise (slot-ref v 'txt-item)))

(define-method raise-vertex ((v <vertex*>) (gv <graph-view>))
	(raise-vertex (hash-table-get (slot-ref gv 'vertex-table) v)))

(define-method lower-vertex ((v <vertex*>) (gv <graph-view>))
	(lower-vertex (hash-table-get (slot-ref gv 'vertex-table) v)))

(define-method raise-edge ((e <edge-item>))
        (let* ((sgs (slot-ref e 'seg-list)))
           (map (lambda (x)
                  (let ((ln (slot-ref x 'line-item)))
                     (raise ln))) sgs))
        (set! (text-color e) (background (parent e))))

(define-method lower-edge ((e <edge-item>))
        (let* ((sgs (slot-ref e 'seg-list)))
           (map (lambda (x)
                  (let ((ln (slot-ref x 'line-item)))
                     (lower ln))) sgs))
        (set! (text-color e) "black"))

