chiark / gitweb /
Added documentation for some initargs to make-instance
[clg] / cairo / cairo.lisp
index 5d6a5adaff5007bf05e98c57a6bde0f3ec9be1b6..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.3 2006-02-07 17:04:40 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)
@@ -631,11 +623,8 @@ (defbinding %scaled-font-create () pointer
   (ctm matrix)
   (options font-options))
 
-(defmethod initialize-instance ((scaled-font scaled-font) &key font-face font-matrix cmt options)
-  (setf
-   (slot-value scaled-font 'location)
-   (%scaled-font-create font-face font-matrix cmt options))
-  (call-next-method))
+(defmethod allocate-foreign ((scaled-font scaled-font) &key font-face font-matrix cmt options)
+  (%scaled-font-create font-face font-matrix cmt options))
 
 
 
@@ -648,24 +637,17 @@ (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))
 
 (defbinding %font-options-create () pointer)
 
-(defmethod initialize-instance ((font-options font-options) &rest initargs)
+(defmethod allocate-foreign ((font-options font-options) &rest initargs)
   (declare (ignore initargs))
-  (setf (slot-value font-options 'location) (%font-options-create))
-  (call-next-method))
+  (%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
@@ -685,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 )
@@ -705,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)
@@ -735,18 +711,15 @@ (defun surface-mark-dirty (surface &optional x y width height)
 ;; Image Surface
 
 ;; Should data be automatically freed when the surface is GCed?
-(defmethod initialize-instance ((surface image-surface) 
-                               &key width height stride format data)
-  (setf 
-   (slot-value surface 'location)
-   (if (not data)
-       (%image-surface-create format width height)
-     (%image-surface-create-for-data data format width height 
-      (or 
-       stride
-       (let ((element-size (cdr (assoc format '((:argb32 . 4) (:rgb24 . 4) (:a8 . 1) (:a1 1/8))))))
-        (ceiling (* width element-size)))))))
-  (call-next-method))
+(defmethod allocate-foreign ((surface image-surface) 
+                            &key width height stride format data)
+  (if (not data)
+      (%image-surface-create format width height)
+    (%image-surface-create-for-data data format width height 
+     (or 
+      stride
+      (let ((element-size (cdr (assoc format '((:argb32 . 4) (:rgb24 . 4) (:a8 . 1) (:a1 1/8))))))
+       (ceiling (* width element-size)))))))
 
 
 (defbinding %image-surface-create () image-surface
@@ -774,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)
@@ -819,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))