anchor.diff:       (= xx 1.0d0) (= yx 0.0d0) (= xy 0.0d0)
        (= yy 1.0d0) (= x0 0.0d0) (= y0 0.0d0))))
   
  -(defbinding matrix-init-translate () nil
  +(defbinding matrix-init-translate (tx ty &optional (matrix (make-instance 'matrix))) nil
     (matrix matrix :in/return)
     (tx double-float)
     (ty double-float))
   
  -(defbinding matrix-init-scale (matrix sx &optional (sy sx)) nil
  +(defbinding matrix-init-scale (sx &optional (sy sx) (matrix (make-instance 'matrix))) nil
     (matrix matrix :in/return)
     (sx double-float)
     (sy double-float))
   
  -(defbinding matrix-init-rotate () nil
  +(defbinding matrix-init-rotate (rotation &optional (matrix (make-instance 'matrix))) nil
     (matrix matrix :in/return)
  -  (radians double-float))
  +  (rotation double-float))
   
   (defbinding matrix-translate () nil
     (matrix matrix :in/return)
  
positive.code:       :type int))
      (:metaclass surface-class))
  
    (defclass pdf-surface (surface)
      ()
      (:metaclass surface-class))
    
    (defclass ps-surface (surface)
      ()
      (:metaclass surface-class))
      
    (defclass svg-surface (surface)
      ()
      (:metaclass surface-class))
  
  
negative.code: 
  ;;; SVG Surface
  
  (defmethod allocate-foreign ((surface svg-surface) &rest args)
    (apply #'allocate-vector-surface 
     #'%svg-surface-create #'%svg-surface-create-for-stream args))
  
  (defbinding %svg-surface-create () pointer
    (filename pathname)
  