cairo: Use bytevectors instead of strings.
authorMatt Birkholz <matt@birchwood-abbey.net>
Sun, 26 Feb 2017 01:31:43 +0000 (18:31 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Sun, 26 Feb 2017 01:31:43 +0000 (18:31 -0700)
src/cairo/cairo-graphics.scm
src/cairo/cairo.scm

index c7e74b2656ff2f3f9f155b0aa25d30b2a8ecc430..09496187f591a512f9cac56d5b824c7d1ff1605d 100644 (file)
@@ -74,8 +74,8 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 (define (cairo-graphics/open make-device #!optional width height)
   (let ((width (if (default-object? width) 512 width))
        (height (if (default-object? height) 384 height)))
-    (guarantee-positive-fixnum width 'cairo-graphics/open)
-    (guarantee-positive-fixnum height 'cairo-graphics/open)
+    (guarantee positive-fixnum? width 'cairo-graphics/open)
+    (guarantee positive-fixnum? height 'cairo-graphics/open)
     (make-device (make-cairo-graphics width height))))
 
 (define (cairo-graphics/close device)
index ea09c9741b9a3225f0ba2e00400e575b67cf95c0..9e9a1cd77a1cf561fdeede3f9edde71bd514b226 100644 (file)
@@ -59,7 +59,7 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
        (let ((msg (C-call "cairo_status_to_string"
                           (make-alien '(* (const char)))
                           status)))
-         (error msg surface)))))
+         (error (utf8->string (c-peek-cstring msg)) surface)))))
 
 (define (guarantee-cairo-surface object operator)
   (if (and (alien? object) (eq? (alien/ctype object) '|cairo_surface_t|))
@@ -68,8 +68,8 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 (define (cairo-surface-write-to-png surface filename)
   (guarantee-cairo-surface surface 'cairo-surface-write-to-png)
-  (guarantee-string filename 'cairo-surface-write-to-png)
-  (C-call "cairo_surface_write_to_png" surface filename))
+  (guarantee string? filename 'cairo-surface-write-to-png)
+  (C-call "cairo_surface_write_to_png" surface (string->utf8 filename)))
 
 (define (cairo-surface-flush surface)
   (guarantee-cairo-surface surface 'cairo-surface-flush)
@@ -119,7 +119,7 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
        (let ((msg (C-call "cairo_status_to_string"
                           (make-alien '(* (const char)))
                           status)))
-         (error msg pattern)))))
+         (error (utf8->string (c-peek-cstring msg)) pattern)))))
 
 (define (guarantee-cairo-pattern object operator)
   (if (and (alien? object) (eq? (alien/ctype object) '|cairo_pattern_t|))
@@ -165,7 +165,7 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
        (let ((msg (C-call "cairo_status_to_string"
                           (make-alien '(* (const char)))
                           status)))
-         (error msg cairo)))))
+         (error (utf8->string (c-peek-cstring msg)) cairo)))))
 
 (define (guarantee-cairo object operator)
   (if (and (alien? object) (eq? (alien/ctype object) '|cairo_t|))
@@ -320,8 +320,8 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 (define (cairo-show-text cairo string)
   (guarantee-cairo cairo 'cairo-show-text)
-  (guarantee-string string 'cairo-show-text)
-  (C-call "cairo_show_text" cairo string))
+  (guarantee string? string 'cairo-show-text)
+  (C-call "cairo_show_text" cairo (string->utf8 string)))
 
 (define (cairo-paint cairo)
   (guarantee-cairo cairo 'cairo-paint)