chiark / gitweb /
Required changes
authorespen <espen>
Wed, 26 Apr 2006 12:37:48 +0000 (12:37 +0000)
committerespen <espen>
Wed, 26 Apr 2006 12:37:48 +0000 (12:37 +0000)
cairo/cairo.lisp

index 9baed3ac7aef76c3b518075ee9a55a15b590396e..0a56c13e74dc22a1710192c9f2e5a586f8499e0b 100644 (file)
@@ -20,7 +20,7 @@
 ;; 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.5 2006-02-09 22:30:39 espen Exp $
+;; $Id: cairo.lisp,v 1.6 2006-04-26 12:37:48 espen Exp $
 
 (in-package "CAIRO")
 
@@ -72,7 +72,9 @@   (defclass glyph (struct)
 
   (defclass font-face (proxy)
     ()
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)
+    (:ref %font-face-reference)
+    (:unref %font-face-destroy))
 
   (defclass font-options (proxy)
     ((antialias
@@ -99,11 +101,15 @@   (defclass font-options (proxy)
       :setter "font_options_set_hint_metrics"
       :accessor font-options-hint-metrics
       :type hint-metrics))
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)    
+    (:ref %font-options-reference)
+    (:unref %font-options-destroy))
 
   (defclass scaled-font (proxy)
     ()
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)
+    (:ref %scaled-font-reference)
+    (:unref %scaled-font-destroy))
 
   (defclass matrix (struct)
     ((xx :allocation :alien :initarg :xx :initform 1.0
@@ -149,7 +155,16 @@   (defclass pattern (proxy)
       :setter "cairo_pattern_set_matrix"
       :accessor pattern-matrix
       :type matrix))
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)
+    (:ref %pattern-reference)
+    (:unref %pattern-destroy))
+
+
+  (defclass surface (proxy)
+    ()
+    (:metaclass proxy-class)
+    (:ref %surface-reference)
+    (:unref %surface-destroy))
 
   (defclass context (proxy)
     ((target
@@ -236,11 +251,9 @@   (defclass context (proxy)
       :writer (setf matrix)
       :type matrix)
      )
-    (:metaclass proxy-class))
-
-  (defclass surface (proxy)
-    ()
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)
+    (:ref %reference)
+    (:unref %destroy))
 
   (defclass image-surface (surface)
     ((width
@@ -253,7 +266,10 @@   (defclass image-surface (surface)
       :getter "cairo_image_surface_get_height"
       :reader surface-height
       :type int))
-    (:metaclass proxy-class))
+    (:metaclass proxy-class)
+    (:ref %surface-reference)
+    (:unref %surface-destroy))
+
 
 ;;   (defclass path (proxy)
 ;;     ()
@@ -270,12 +286,6 @@ (defbinding %reference () nil
 (defbinding %destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'context))) location)
-  (%reference location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'context))) location)
-  (%destroy location))
-
 (defbinding (save-context "cairo_save") () nil
   (cr context))
 
@@ -484,12 +494,6 @@ (defbinding %pattern-reference () nil
 (defbinding %pattern-destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'pattern))) location)
-  (%pattern-reference location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'pattern))) location)
-  (%pattern-destroy location))
-
 (defbinding pattern-status () status
   (pattern pattern))
 
@@ -517,30 +521,30 @@ (defbinding transform () nil
 
 (defbinding (matrix "cairo_get_matrix") () nil
   (cr context)
-  ((make-instance 'matrix) matrix :return))
+  ((make-instance 'matrix) matrix :in/return))
 
 (defbinding identity-matrix () nil
   (cr context))
 
 (defbinding user-to-device () nil
   (cr context)
-  (x double-float :in-out)
-  (y double-float :in-out))
+  (x double-float :in/out)
+  (y double-float :in/out))
 
 (defbinding user-to-device-distance () nil
   (cr context)
-  (dx double-float :in-out)
-  (dy double-float :in-out))
+  (dx double-float :in/out)
+  (dy double-float :in/out))
 
 (defbinding device-to-user () nil
   (cr context)
-  (x double-float :in-out)
-  (y double-float :in-out))
+  (x double-float :in/out)
+  (y double-float :in/out))
 
 (defbinding device-to-user-distance () nil
   (cr context)
-  (dx double-float :in-out)
-  (dy double-float :in-out))
+  (dx double-float :in/out)
+  (dy double-float :in/out))
 
 
 ;;; Text
@@ -570,13 +574,13 @@ (defbinding font-extents () boolean
 (defbinding text-extents (cr text &optional (extents (make-instance 'text-extents))) nil
   (cr context)
   (text string)
-  (extents text-extents :return))
+  (extents text-extents :in/return))
 
 (defbinding glyph-extents (cr glyphs &optional (extents (make-instance 'text-extents))) nil
   (cr context)
   (glyphs (vector glyph))
   ((length glyphs) int)
-  (extents text-extents :return))
+  (extents text-extents :in/return))
 
 
 ;;; Fonts
@@ -587,12 +591,6 @@ (defbinding %font-face-reference () nil
 (defbinding %font-face-destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'font-face))) location)
-  (%font-face-reference location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'font-face))) location)
-  (%font-face-destroy location))
-
 (defbinding font-face-status () status
   (font-face font-face))
 
@@ -606,24 +604,18 @@ (defbinding %scaled-font-reference () nil
 (defbinding %scaled-font-destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'scaled-font))) location)
-  (%scaled-font-reference location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'scaled-font))) location)
-  (%scaled-font-destroy location))
-
 (defbinding scaled-font-status () status
   (scaled-font scaled-font))
 
 (defbinding scaled-font-extents (scaled-font &optional (extents (make-instance 'text-extents))) nil
   (scaled-font scaled-font)
-  (extents text-extents :return))
+  (extents text-extents :in/return))
 
 (defbinding scaled-font-glyph-extents (scaled-font glyphs &optional (extents (make-instance 'text-extents))) nil
   (scaled-font scaled-font)
   (glyphs (vector glyph))
   ((length glyphs) int)
-  (extents text-extents :return))
+  (extents text-extents :in/return))
 
 (defbinding %scaled-font-create () pointer
   (font-face font-face)
@@ -645,12 +637,6 @@ (defbinding %font-options-copy () nil
 (defbinding %font-options-destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'font-options))) location)
-  (%font-options-copy location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'font-options))) location)
-  (%font-options-destroy location))
-
 (defbinding font-options-status () status
   (font-options font-options))
 
@@ -661,7 +647,7 @@ (defmethod allocate-foreign ((font-options font-options) &rest initargs)
   (%font-options-create))
 
 (defbinding font-options-merge () nil
-  (options1 font-options :return)
+  (options1 font-options :in/return)
   (options2 font-options))
 
 (defbinding font-options-hash () unsigned-int
@@ -681,12 +667,6 @@ (defbinding %surface-reference () nil
 (defbinding %surface-destroy () nil
   (location pointer))
 
-(defmethod reference-foreign ((class (eql (find-class 'surface))) location)
-  (%surface-reference location))
-
-(defmethod unreference-foreign ((class (eql (find-class 'surface))) location)
-  (%surface-destroy location))
-
 (defbinding surface-create-similar () surface
   (other surface)
   (format surface-format )
@@ -701,7 +681,7 @@ (defbinding surface-flush () nil
 
 (defbinding surface-get-font-options () nil
   (surface surface)
-  ((make-instance 'font-options) font-options :return))
+  ((make-instance 'font-options) font-options :in/return))
 
 (defbinding surface-set-device-offset () nil
   (surface surface)
@@ -767,44 +747,44 @@ (defbinding image-surface-create-from-png (filename) image-surface
 ;;; Matrices
 
 (defbinding matrix-init () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (xx double-float) (yx double-float) 
   (xy double-float) (yy double-float) 
   (x0 double-float) (y0 double-float))
 
 (defbinding matrix-init-identity () nil
-  (matrix matrix :return))
+  (matrix matrix :in/return))
 
 (defbinding matrix-init-translate () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (tx double-float)
   (ty double-float))
 
 (defbinding matrix-init-scale () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (sx double-float)
   (sy double-float))
 
 (defbinding matrix-init-rotate () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (radians double-float))
 
 (defbinding matrix-translate () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (tx double-float)
   (ty double-float))
 
 (defbinding matrix-scale () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (sx double-float)
   (sy double-float))
 
 (defbinding matrix-rotate () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (radians double-float))
 
 (defbinding matrix-invert () nil
-  (matrix matrix :return))
+  (matrix matrix :in/return))
 
 (defbinding matrix-multiply () nil
   (result matrix :out)
@@ -812,12 +792,12 @@ (defbinding matrix-multiply () nil
   (b matrix))
 
 (defbinding matrix-transform-distance () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (dx double-float)
   (dy double-float))
 
 (defbinding matrix-transform-point () nil
-  (matrix matrix :return)
+  (matrix matrix :in/return)
   (x double-float)
   (y double-float))