anchor.diff:    (cairo:stroke cr))
   
   
  -;; (define-snippet curve-rectangle (cr)
  -;;   (let ((x0 0.1)
  -;; 	(y0 0.1)
  -;; 	(width 0.8)
  -;; 	(height 0.8)
  -;; 	(radius 0.4))
  -;;     (unless (and (zerop width) (zerop height))
  -;;       (let ((x1 (+ x0 width))
  -;; 	    (y1 (+ y0 height)))
  -;; 	(cond
  -;; 	 ((and (< (* 0.5 width) radius) (< (* 0.5 height) radius))
  -;; 	  (cairo:move-to cr x0 (* 0.5 (+ y0 y1)))
  -;; 	  (cairo:curve-to cr x0 y0 x0 y0 (* 0.5 (+ x0 x1)) y0)
  -;; 	  (cairo:curve-to cr x1 y0 x1 y0 x1 (* 0.5 (+ y0 y1)))
  -;; 	  (cairo:curve-to cr x1 y1 x1 y1 (* 0.5 (+ x0 x1)) y1)
  -;; 	  (cairo:curve-to cr x0 y1 x0 y1 x0 (* 0.5 (+ y0 y1))))
  -;; 	 ((< (* 0.5 width) radius)
  -;; 	  (cairo:move-to  cr x0 (+ y0 radius))
  -;; 	  (cairo:curve-to cr x0 y0 x0 y0 (* 0.5 (+ x0 x1)) y0)
  -;; 	  (cairo:curve-to cr x1 y0 x1 y0 x1 (+ y0 radius))
  -;; 	  (cairo:line-to cr x1  (- y1 radius))
  -;; 	  (cairo:curve-to cr x1 y1 x1 y1 (* 0.5 (+ x0 x1)) y1)
  -;; 	  (cairo:curve-to cr x0 y1 x0 y1 x0 (- y1 radius)))
  -;; 	 ((< (* 0.5 height) radius)
  -;; 	  (cairo:move-to cr x0 (* 0.5 (+ y0 y1)))
  -;; 	  (cairo:curve-to cr x0  y0 x0  y0 (+ x0 radius) y0)
  -;; 	  (cairo:line-to cr (- x1 radius) y0)
  -;; 	  (cairo:curve-to cr x1 y0 x1 y0 x1 (* 0.5 (+ y0 y1)))
  -;; 	  (cairo:curve-to cr x1 y1 x1 y1 (- x1 radius) y1)
  -;; 	  (cairo:line-to cr (+ x0 radius) y1)
  -;; 	  (cairo:curve-to cr x0 y1 x0 y1 x0 (* 0.5 (+ y0 y1))))
  -;; 	 (t
  -;; 	  (cairo:move-to cr x0 (+ y0 radius))
  -;; 	  (cairo:curve-to cr x0 y0 x0 y0 (+ x0 radius) y0)
  -;; 	  (cairo:line-to cr (- x1 radius) y0)
  -;; 	  (cairo:curve-to cr x1 y0 x1 y0 x1 (+ y0 radius))
  -;; 	  (cairo:line-to cr x1 (- y1 radius))
  -;; 	  (cairo:curve-to cr x1 y1 x1 y1 (- x1 radius) y1)
  -;; 	  (cairo:line-to cr (+ x0 radius) y1)
  -;; 	  (cairo:curve-to cr x0 y1 x0 y1 x0 (- y1 radius))))
  -;; 	(cairo:close-path cr)
  -
  -;; 	(cairo:set-source-color cr 0.5 0.5 1.0)
  -;; 	(cairo:fill cr t)
  -;;  	(cairo:set-source-color cr 0.5 0.0 0.0 0.5)
  -;;  	(cairo:stroke cr)))))
  +(define-snippet curve-rectangle (cr)
  +  (let ((x0 0.1)
  +	(y0 0.1)
  +	(width 0.8)
  +	(height 0.8)
  +	(radius 0.4))
  +    (unless (and (zerop width) (zerop height))
  +      (let ((x1 (+ x0 width))
  +	    (y1 (+ y0 height)))
  +	(cond
  +	 ((and (< (* 0.5 width) radius) (< (* 0.5 height) radius))
  +	  (cairo:move-to cr x0 (* 0.5 (+ y0 y1)))
  +	  (cairo:curve-to cr x0 y0 x0 y0 (* 0.5 (+ x0 x1)) y0)
  +	  (cairo:curve-to cr x1 y0 x1 y0 x1 (* 0.5 (+ y0 y1)))
  +	  (cairo:curve-to cr x1 y1 x1 y1 (* 0.5 (+ x0 x1)) y1)
  +	  (cairo:curve-to cr x0 y1 x0 y1 x0 (* 0.5 (+ y0 y1))))
  +	 ((< (* 0.5 width) radius)
  +	  (cairo:move-to  cr x0 (+ y0 radius))
  +	  (cairo:curve-to cr x0 y0 x0 y0 (* 0.5 (+ x0 x1)) y0)
  +	  (cairo:curve-to cr x1 y0 x1 y0 x1 (+ y0 radius))
  +	  (cairo:line-to cr x1  (- y1 radius))
  +	  (cairo:curve-to cr x1 y1 x1 y1 (* 0.5 (+ x0 x1)) y1)
  +	  (cairo:curve-to cr x0 y1 x0 y1 x0 (- y1 radius)))
  +	 ((< (* 0.5 height) radius)
  +	  (cairo:move-to cr x0 (* 0.5 (+ y0 y1)))
  +	  (cairo:curve-to cr x0  y0 x0  y0 (+ x0 radius) y0)
  +	  (cairo:line-to cr (- x1 radius) y0)
  +	  (cairo:curve-to cr x1 y0 x1 y0 x1 (* 0.5 (+ y0 y1)))
  +	  (cairo:curve-to cr x1 y1 x1 y1 (- x1 radius) y1)
  +	  (cairo:line-to cr (+ x0 radius) y1)
  +	  (cairo:curve-to cr x0 y1 x0 y1 x0 (* 0.5 (+ y0 y1))))
  +	 (t
  +	  (cairo:move-to cr x0 (+ y0 radius))
  +	  (cairo:curve-to cr x0 y0 x0 y0 (+ x0 radius) y0)
  +	  (cairo:line-to cr (- x1 radius) y0)
  +	  (cairo:curve-to cr x1 y0 x1 y0 x1 (+ y0 radius))
  +	  (cairo:line-to cr x1 (- y1 radius))
  +	  (cairo:curve-to cr x1 y1 x1 y1 (- x1 radius) y1)
  +	  (cairo:line-to cr (+ x0 radius) y1)
  +	  (cairo:curve-to cr x0 y1 x0 y1 x0 (- y1 radius))))
  +	(cairo:close-path cr)
  +
  +	(cairo:set-source-color cr 0.5 0.5 1.0)
  +	(cairo:fill cr t)
  + 	(cairo:set-source-color cr 0.5 0.0 0.0 0.5)
  + 	(cairo:stroke cr)))))
   
   
   
  
positive.code:   (cairo:rel-line-to cr -0.4 0.0)
    (cairo:curve-to cr 0.2 0.9 0.2 0.5 0.5 0.5)
    (cairo:stroke cr))
  
  
  ;; (let ((path))
  ;;   (define-snippet pattern-fill (cr)
  ;;     (let ((spikes 10)
  ;; 	  (text "KAPOW!"))
  ;;       (unless path
  ;; 	(let ((x-fuzz 0.08)
  ;; 	      (y-fuzz 0.08)
  ;; 	      (x-inner-radius 0.3)
  ;; 	      (y-inner-radius 0.2)
  ;; 	      (x-outer-radius 0.45)
  ;; 	      (y-outer-radius 0.35))
  ;; 	  (setq path (make-array (* 2 spikes)))
  ;; 	  (loop
  ;; 	   for i from 0 below (* 2 spikes)
  ;; 	   do (multiple-value-bind (x-radius y-radius)
  ;; 		  (if (evenp i)
  ;; 		      (values x-inner-radius y-inner-radius)
  ;; 		    (values x-outer-radius y-outer-radius))
  ;; 		(setf 
  ;; 		 (svref path i)
  ;; 		 (cons
  ;; 		  (+ 0.5 (* (cos (* pi (/ i spikes))) x-radius) 
  ;; 		     (* (random 1.0) x-fuzz))
  ;; 		  (+ 0.5 (* (sin (* pi (/ i spikes))) y-radius)
  ;; 		     (* (random 1.0) y-fuzz))))))))
        
  ;;       (setf (cairo:line-width cr) 0.01)
  ;;       (cairo:move-to cr (car (svref path 0)) (cdr (svref path 0)))
  ;;       (loop
  ;;        for i from 1 below (* 2 spikes)
  ;;        do (cairo:line-to cr (car (svref path i)) (cdr (svref path i))))
  ;;       (cairo:close-path cr)
  ;;       (cairo:stroke cr)
  ;;       (cairo:move-to cr 
  ;;        (car (svref path (1- spikes))) (cdr (svref path (1- spikes))))
  
  ;;       (cairo:select-font-face cr "Sans" :normal :bold)
  ;;       (time (cairo:text-path cr text))
  ;;       (cairo:set-source-color cr 1.0 1.0 0.5)
  ;;       (cairo:fill cr)
  
  ;;       (cairo:set-font-size cr 0.2)
  ;;       (let* ((extents (cairo:text-extents cr text))
  ;; 	     (x (- 0.5 (+ (* 0.5 (cairo:text-extents-width extents)) (cairo:text-extents-x-bearing extents))))
  ;; 	     (y (- 0.5 (+ (* 0.5 (cairo:text-extents-height extents)) (cairo:text-extents-y-bearing extents)))))
  
  ;; 	(cairo:move-to cr x y)
  ;; 	(cairo:text-path cr text)
  ;; 	(cairo:set-source-color cr 0 0 0)
  ;; 	(cairo:stroke cr)))))
  
  
  
  (define-snippet set-line-cap (cr)
  
negative.code: #+cmu(asdf:oos 'asdf:load-op :gtk)
  #+sbcl(require :cairo)
  #+cmu(asdf:oos 'asdf:load-op :cairo)
  #+sbcl(require :rsvg)
  #+cmu(asdf:oos 'asdf:load-op :rsvg)
  
  (defpackage "TESTCAIRO"
    (:use "COMMON-LISP" "GTK")
  