anchor.diff:  (defbinding (restore-context "cairo_restore") () nil
     (cr context))
   
  -(defmacro with-context ((cr) &body body)
  -  (let ((context (make-symbol "CONTEXT")))
  +(defmacro with-context ((cr &optional var) &body body)
  +  (let ((context (or var (make-symbol "CONTEXT"))))
       `(let ((,context ,cr))
          (save-context ,context)
          (unwind-protect
  
positive.code: ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  ;; $Id: cairo.lisp,v 1.10 2007-01-13 00:15:36 espen Exp $
  
  (in-package "CAIRO")
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (define-enum-type surface-format :argb32 :rgb24 :a8 :a1)
    #?(pkg-exists-p "cairo" :atleast-version "1.2")
    (define-enum-type content :color :alpha :color-alpha)
    #?(pkg-exists-p "cairo" :atleast-version "1.2")
    (define-enum-type surface-type 
      :image :pdf :ps :xlib :xcb :glitz :quartz :win32 :beos :directfb 
      :svg :nquartz :os2)
    
  
    (define-enum-type status
      :success :no-memory :invalid-restore :invalid-pop-group
  
negative.code:       (multiple-value-call #'scale cr (device-to-user-distance cr 1.0))
      (multiple-value-bind (x y) 
  	(multiple-value-call #'user-to-device cr (get-current-point cr))
  ;      (identity-matrix cr)
        (setf (matrix cr) (matrix-init-identity))
        (translate cr x y))))
  
  (defbinding rotate () nil
  