anchor.diff:    (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)
  
positive.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 :avg-cairo)
  
  (defpackage "TESTCAIRO"
    (:use "COMMON-LISP" "GTK")
  
negative.code: 
  
  (clg-init)
  (rsvg:init)
  
  ;; We need to turn off floating point exceptions, because Cairo is
  ;; presumably using internal code which generates NaNs in some cases.
  ;; Thanks to Christophe Rhodes for pointing this out.
  #+sbcl(sb-int:set-floating-point-modes :traps nil) 
  #+cmu(ext:set-floating-point-modes :traps nil)
  
  (create-tests)
  