Remove vendored lib/thunderchez

ober

44d82917315d637f2e1a6937f63848479ee957f2

diff --git a/lib/thunderchez/.gitignore b/lib/thunderchez/.gitignore
deleted file mode 100644
index c485ffa..0000000
--- a/lib/thunderchez/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Codegen data files (large, not needed at runtime)
-*.sexp
-*.json
-# Test images
-*.png
-*.bmp
-# Codegen scripts
-parse-json.ss
-parse-sdl-json.ss
-# Test files
-mtest.ss
-# TTF shim C source (pre-built)
-ttf-shim/
diff --git a/lib/thunderchez/cairo.sls b/lib/thunderchez/cairo.sls
deleted file mode 100644
index c89f08c..0000000
--- a/lib/thunderchez/cairo.sls
+++ /dev/null
@@ -1,360 +0,0 @@
-;;
-;; Copyright 2016 Aldo Nicolas Bruno
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; You may obtain a copy of the License at
-;;
-;;     http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-
-#!chezscheme
-
-(library
- (thunderchez cairo)
- (export 
-  cairo-library-init
-  cairo-version cairo-version-string cairo-create 
-  ;;cairo-reference cairo-destroy cairo-get-reference-count 
-  cairo-get-user-data
-  cairo-set-user-data cairo-save cairo-restore cairo-push-group
-  cairo-push-group-with-content cairo-pop-group
-  cairo-pop-group-to-source cairo-set-operator cairo-set-source
-  cairo-set-source-rgb cairo-set-source-rgba cairo-set-source-surface
-  cairo-set-tolerance cairo-set-antialias cairo-set-fill-rule
-  cairo-set-line-width cairo-set-line-cap cairo-set-line-join
-  cairo-set-dash cairo-set-miter-limit cairo-translate cairo-scale
-  cairo-rotate cairo-transform cairo-set-matrix cairo-identity-matrix
-  cairo-user-to-device cairo-user-to-device-distance
-  cairo-device-to-user cairo-device-to-user-distance cairo-new-path
-  cairo-move-to cairo-new-sub-path cairo-line-to cairo-curve-to
-  cairo-arc cairo-arc-negative cairo-rel-move-to
-
-  cairo-rel-line-to cairo-rel-curve-to cairo-rectangle
-  cairo-close-path cairo-path-extents cairo-paint
-  cairo-paint-with-alpha cairo-mask cairo-mask-surface cairo-stroke
-  cairo-stroke-preserve cairo-fill cairo-fill-preserve cairo-copy-page
-  cairo-show-page cairo-in-stroke cairo-in-fill cairo-in-clip
-  cairo-stroke-extents cairo-fill-extents cairo-reset-clip cairo-clip
-  cairo-clip-preserve cairo-clip-extents cairo-copy-clip-rectangle-list
-					;cairo-rectangle-list-destroy 
-  cairo-glyph-allocate cairo-glyph-free
-  cairo-text-cluster-allocate cairo-text-cluster-free
-  cairo-font-options-create cairo-font-options-copy
-					;cairo-font-options-destroy 
-  cairo-font-options-status
-  cairo-font-options-merge cairo-font-options-equal
-  cairo-font-options-hash cairo-font-options-set-antialias
-  cairo-font-options-get-antialias cairo-font-options-set-subpixel-order
-  cairo-font-options-get-subpixel-order
-  cairo-font-options-set-hint-style cairo-font-options-get-hint-style
-  cairo-font-options-set-hint-metrics
-  cairo-font-options-get-hint-metrics cairo-select-font-face
-  cairo-set-font-size cairo-set-font-matrix cairo-get-font-matrix
-  cairo-set-font-options cairo-get-font-options cairo-set-font-face
-  cairo-get-font-face cairo-set-scaled-font cairo-get-scaled-font
-  cairo-show-text cairo-show-glyphs cairo-show-text-glyphs
-  cairo-text-path cairo-glyph-path cairo-text-extents
-  cairo-glyph-extents cairo-font-extents 
-					;cairo-font-face-reference cairo-font-face-destroy cairo-font-face-get-reference-count
-  cairo-font-face-status cairo-font-face-get-type
-  cairo-font-face-get-user-data cairo-font-face-set-user-data
-  cairo-scaled-font-create 
-					;cairo-scaled-font-reference cairo-scaled-font-destroy cairo-scaled-font-get-reference-count
-  cairo-scaled-font-status cairo-scaled-font-get-type
-  cairo-scaled-font-get-user-data cairo-scaled-font-set-user-data
-  cairo-scaled-font-extents cairo-scaled-font-text-extents
-  cairo-scaled-font-glyph-extents cairo-scaled-font-text-to-glyphs
-  cairo-scaled-font-get-font-face cairo-scaled-font-get-font-matrix
-  cairo-scaled-font-get-ctm cairo-scaled-font-get-scale-matrix
-  cairo-scaled-font-get-font-options cairo-toy-font-face-create
-  cairo-toy-font-face-get-family cairo-toy-font-face-get-slant
-  cairo-toy-font-face-get-weight cairo-user-font-face-create
-  cairo-user-font-face-set-init-func
-  cairo-user-font-face-set-render-glyph-func
-  cairo-user-font-face-set-text-to-glyphs-func
-  cairo-user-font-face-set-unicode-to-glyph-func
-  cairo-user-font-face-get-init-func
-  cairo-user-font-face-get-render-glyph-func
-  cairo-user-font-face-get-text-to-glyphs-func
-  cairo-user-font-face-get-unicode-to-glyph-func cairo-get-operator
-  cairo-get-source cairo-get-tolerance cairo-get-antialias
-  cairo-has-current-point cairo-get-current-point cairo-get-fill-rule
-  cairo-get-line-width cairo-get-line-cap cairo-get-line-join
-  cairo-get-miter-limit cairo-get-dash-count cairo-get-dash
-  cairo-get-matrix cairo-get-target cairo-get-group-target
-  cairo-copy-path cairo-copy-path-flat cairo-append-path
-					;cairo-path-destroy 
-  cairo-status cairo-status-to-string
-					;cairo-device-reference 
-  cairo-device-get-type cairo-device-status
-  cairo-device-acquire cairo-device-release cairo-device-flush
-  cairo-device-finish 
-					;cairo-device-destroy cairo-device-get-reference-count 
-  cairo-device-get-user-data
-  cairo-device-set-user-data cairo-surface-create-similar
-  cairo-surface-create-similar-image cairo-surface-map-to-image
-  cairo-surface-unmap-image cairo-surface-create-for-rectangle
-  cairo-surface-create-observer
-  cairo-surface-observer-add-paint-callback
-  cairo-surface-observer-add-mask-callback
-  cairo-surface-observer-add-fill-callback
-  cairo-surface-observer-add-stroke-callback
-  cairo-surface-observer-add-glyphs-callback
-  cairo-surface-observer-add-flush-callback
-  cairo-surface-observer-add-finish-callback
-  cairo-surface-observer-print cairo-surface-observer-elapsed
-  cairo-device-observer-print cairo-device-observer-elapsed
-  cairo-device-observer-paint-elapsed cairo-device-observer-mask-elapsed
-  cairo-device-observer-fill-elapsed
-  cairo-device-observer-stroke-elapsed
-  cairo-device-observer-glyphs-elapsed 
-					;cairo-surface-reference
-  cairo-surface-finish 
-					;cairo-surface-destroy 
-  cairo-surface-get-device
-					;cairo-surface-get-reference-count 
-  cairo-surface-status
-  cairo-surface-get-type cairo-surface-get-content
-  cairo-surface-write-to-png cairo-surface-write-to-png-stream
-  cairo-surface-get-user-data cairo-surface-set-user-data
-  cairo-surface-get-mime-data cairo-surface-set-mime-data
-  cairo-surface-supports-mime-type cairo-surface-get-font-options
-  cairo-surface-flush cairo-surface-mark-dirty
-  cairo-surface-mark-dirty-rectangle cairo-surface-set-device-scale
-  cairo-surface-get-device-scale cairo-surface-set-device-offset
-  cairo-surface-get-device-offset cairo-surface-set-fallback-resolution
-  cairo-surface-get-fallback-resolution cairo-surface-copy-page
-  cairo-surface-show-page cairo-surface-has-show-text-glyphs
-  cairo-image-surface-create cairo-format-stride-for-width
-  cairo-image-surface-create-for-data cairo-image-surface-get-data
-  cairo-image-surface-get-format cairo-image-surface-get-width
-  cairo-image-surface-get-height cairo-image-surface-get-stride
-  cairo-image-surface-create-from-png
-  cairo-image-surface-create-from-png-stream
-  cairo-recording-surface-create cairo-recording-surface-ink-extents
-  cairo-recording-surface-get-extents cairo-pattern-create-raster-source
-  cairo-raster-source-pattern-set-callback-data
-  cairo-raster-source-pattern-get-callback-data
-  cairo-raster-source-pattern-set-acquire
-  cairo-raster-source-pattern-get-acquire
-  cairo-raster-source-pattern-set-snapshot
-  cairo-raster-source-pattern-get-snapshot
-  cairo-raster-source-pattern-set-copy
-  cairo-raster-source-pattern-get-copy
-  cairo-raster-source-pattern-set-finish
-  cairo-raster-source-pattern-get-finish cairo-pattern-create-rgb
-  cairo-pattern-create-rgba cairo-pattern-create-for-surface
-  cairo-pattern-create-linear cairo-pattern-create-radial
-  cairo-pattern-create-mesh 
-					;cairo-pattern-reference cairo-pattern-destroy cairo-pattern-get-reference-count
-  cairo-pattern-status cairo-pattern-get-user-data
-  cairo-pattern-set-user-data cairo-pattern-get-type
-  cairo-pattern-add-color-stop-rgb cairo-pattern-add-color-stop-rgba
-  cairo-mesh-pattern-begin-patch cairo-mesh-pattern-end-patch
-  cairo-mesh-pattern-curve-to cairo-mesh-pattern-line-to
-  cairo-mesh-pattern-move-to cairo-mesh-pattern-set-control-point
-  cairo-mesh-pattern-set-corner-color-rgb
-  cairo-mesh-pattern-set-corner-color-rgba cairo-pattern-set-matrix
-  cairo-pattern-get-matrix cairo-pattern-set-extend
-  cairo-pattern-get-extend cairo-pattern-set-filter
-  cairo-pattern-get-filter cairo-pattern-get-rgba
-  cairo-pattern-get-surface cairo-pattern-get-color-stop-rgba
-  cairo-pattern-get-color-stop-count cairo-pattern-get-linear-points
-  cairo-pattern-get-radial-circles cairo-mesh-pattern-get-patch-count
-  cairo-mesh-pattern-get-path cairo-mesh-pattern-get-corner-color-rgba
-  cairo-mesh-pattern-get-control-point cairo-matrix-init
-  cairo-matrix-init-identity cairo-matrix-init-translate
-  cairo-matrix-init-scale cairo-matrix-init-rotate
-  cairo-matrix-translate cairo-matrix-scale cairo-matrix-rotate
-  cairo-matrix-invert cairo-matrix-multiply
-  cairo-matrix-transform-distance cairo-matrix-transform-point
-  cairo-region-create cairo-region-create-rectangle
-  cairo-region-create-rectangles cairo-region-copy
-					;cairo-region-reference cairo-region-destroy 
-  cairo-region-equal
-  cairo-region-status cairo-region-get-extents
-  cairo-region-num-rectangles cairo-region-get-rectangle
-  cairo-region-is-empty cairo-region-contains-rectangle
-  cairo-region-contains-point cairo-region-translate
-  cairo-region-subtract cairo-region-subtract-rectangle
-  cairo-region-intersect cairo-region-intersect-rectangle
-  cairo-region-union cairo-region-union-rectangle cairo-region-xor
-  cairo-region-xor-rectangle cairo-debug-reset-static-data
-  cairo-pdf-surface-create cairo-pdf-surface-create-for-stream
-  cairo-pdf-surface-restrict-to-version cairo-pdf-get-versions
-  cairo-pdf-version-to-string cairo-pdf-surface-set-size
-
-  cairo-set-source-color
-  color-r color-g color-b color-a
-  make-color color?
-  
-  unsigned-8*
-  cairo-bool-t
-  cairo-t
-  cairo-surface-t
-  cairo-surface-t*
-  cairo-device-t
-  cairo-matrix-t
-  cairo-pattern-t
-  cairo-destroy-func-t
-  cairo-user-data-key-t
-  cairo-status-t
-  cairo-content-t
-  cairo-format-t
-  cairo-write-func-t
-  cairo-read-func-t
-  cairo-rectangle-int-t
-  cairo-operator-t
-  cairo-antialias-t
-  cairo-fill-rule-t
-  cairo-line-cap-t
-  cairo-line-join-t
-  double-array
-  cairo-rectangle-t
-  cairo-rectangle-list-t
-  cairo-scaled-font-t
-  cairo-font-face-t
-  cairo-glyph-t
-  cairo-glyph-t*
-  cairo-text-cluster-t
-  cairo-text-cluster-t*
-  cairo-text-cluster-flags-t
-  cairo-text-extents-t
-  cairo-font-extents-t
-  cairo-font-slant-t
-  cairo-font-weight-t
-  cairo-subpixel-order-t
-  cairo-hint-style-t
-  cairo-hint-metrics-t
-  cairo-font-options-t
-  cairo-font-type-t
-  cairo-user-scaled-font-init-func-t
-  cairo-user-scaled-font-render-glyph-func-t
-  cairo-user-scaled-font-text-to-glyphs-func-t
-  cairo-user-scaled-font-unicode-to-glyph-func-t
-  cairo-path-data-type-t
-  cairo-path-data-t
-  cairo-path-t
-  cairo-device-type-t
-  cairo-surface-observer-mode-t
-  cairo-surface-observer-callback-t
-  cairo-surface-type-t
-  cairo-raster-source-acquire-func-t
-  cairo-raster-source-acquire-func-t*
-  cairo-raster-source-release-func-t
-  cairo-raster-source-release-func-t*
-  cairo-raster-source-snapshot-func-t
-  cairo-raster-source-copy-func-t
-  cairo-raster-source-finish-func-t
-  cairo-pattern-type-t
-  cairo-extend-t
-  cairo-filter-t
-  cairo-region-t
-  cairo-region-overlap-t
-  cairo-pdf-version-t
-  cairo-pdf-version-t*
-					;enums
-  cairo-status-enum
-  cairo-format
-  cairo-operator
-  cairo-antialias
-  cairo-fill-rule
-  cairo-line-cap
-  cairo-line-join
-  cairo-text-cluster-flag
-  cairo-font-slant
-  cairo-font-weight
-  cairo-subpixel-order
-  cairo-hint-style
-  cairo-hint-metrics
-  cairo-font-type
-  cairo-path-data-type
-  cairo-device-type
-  cairo-surface-observer-mode
-  cairo-surface-type
-  cairo-pattern-type
-  cairo-extend
-  cairo-filter
-  cairo-region-overlap
-  ;; ALLOCATORS	 
-  cairo-rectangle-create
-  cairo-rectangle-list-create
-  cairo-glyph-create
-  cairo-glyph*-create
-  cairo-text-cluster-create
-  cairo-text-cluster*-create
-  cairo-text-extents-create
-  cairo-text-cluster-flags-create
-  cairo-font-extents-create
-  cairo-path-create
-  double-array-create 
-  double-array-create-from-vector
-  cairo-matrix-create
-  cairo-int-create
-  cairo-void*-create
-  cairo-guardian
-  cairo-free-garbage
-  cairo-guard-pointer
-  with-cairo
-  let-struct
-  )
- (import (chezscheme) (thunderchez ffi-utils))
- 
- (include "cairo/ffi-utils.ss")
-
- (define (cairo-library-init . t) (load-shared-object (if (null? t) "libcairo.so.2" (car t))))
-
- (include "cairo/types.ss")
-
- (define cairo-guardian (make-guardian))
- (define (cairo-guard-pointer obj) 
-   (cairo-free-garbage) 
-   (cairo-guardian obj)
-   obj)
- (include "cairo/cairo-functions.ss")
- (define (cairo-free-garbage)
-   (let loop ([p (cairo-guardian)])
-     (when p
-	   (when (ftype-pointer? p)
-		 ;(printf "cairo-free-garbage: freeing memory at ~x\n" p)
-		 ;;[(ftype-pointer? usb-device*-array p)
-		 (cond 
-		  [(ftype-pointer? cairo-t p) (cairo-destroy p)]
-		  [(ftype-pointer? cairo-surface-t p) (cairo-surface-destroy p)]
-		  [(ftype-pointer? cairo-pattern-t p) (cairo-pattern-destroy p)]
-		  [(ftype-pointer? cairo-region-t p) (void)]; (cairo-region-destroy p)]
-		  [(ftype-pointer? cairo-rectangle-list-t p) (cairo-rectangle-list-destroy p)]
-		  [(ftype-pointer? cairo-font-options-t p) (cairo-font-options-destroy p)]
-		  [(ftype-pointer? cairo-font-face-t p) (cairo-font-face-destroy p)]
-		  [(ftype-pointer? cairo-scaled-font-t p) (cairo-scaled-font-destroy p)]
-		  [(ftype-pointer? cairo-path-t p) (cairo-path-destroy p)]
-		  [(ftype-pointer? cairo-device-t p) (cairo-device-destroy p)]
-		  [(ftype-pointer? cairo-glyph-t p) (cairo-glyph-free p)]
-		  [(ftype-pointer? cairo-text-cluster-t p) (cairo-text-cluster-free p)]
-		  [else
-		   (foreign-free (ftype-pointer-address p))]
-		  ))
-	   (loop (cairo-guardian)))))
-
-
-
-(include "cairo/cairo-pdf-functions.ss")
-
-(define-record-type (color mkcolor color?) 
-  (fields r g b a))
-
-(define make-color
-  (case-lambda
-   [(r g b) (mkcolor r g b 1.0)]
-   [(r g b a) (mkcolor r g b a)]))
-  
-(define (cairo-set-source-color ctx c)
-  (cairo-set-source-rgba ctx (color-r c) (color-g c) (color-b c) (color-a c)))
-
-) ; library cairo
diff --git a/lib/thunderchez/cairo/cairo-functions.ss b/lib/thunderchez/cairo/cairo-functions.ss
deleted file mode 100644
index 724722a..0000000
--- a/lib/thunderchez/cairo/cairo-functions.ss
+++ /dev/null
@@ -1,327 +0,0 @@
-(define-cairo-func int cairo-version () "cairo_version")
-(define-cairo-func string cairo-version-string () "cairo_version_string")
-(define-cairo-func (* cairo-t) cairo-create ((target (* cairo-surface-t))) "cairo_create")
-(define-cairo-func (* cairo-t) cairo-reference ((cr (* cairo-t))) "cairo_reference")
-(define-cairo-func void cairo-destroy ((cr (* cairo-t))) "cairo_destroy")
-(define-cairo-func unsigned-int cairo-get-reference-count ((cr (* cairo-t))) "cairo_get_reference_count")
-(define-cairo-func void* cairo-get-user-data ((cr (* cairo-t)) (key (* cairo-user-data-key-t))) "cairo_get_user_data")
-(define-cairo-func cairo-status-t cairo-set-user-data ((cr (* cairo-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_set_user_data")
-(define-cairo-func void cairo-save ((cr (* cairo-t))) "cairo_save")
-(define-cairo-func void cairo-restore ((cr (* cairo-t))) "cairo_restore")
-(define-cairo-func void cairo-push-group ((cr (* cairo-t))) "cairo_push_group")
-(define-cairo-func void cairo-push-group-with-content ((cr (* cairo-t)) (content cairo-content-t)) "cairo_push_group_with_content")
-(define-cairo-func (* cairo-pattern-t) cairo-pop-group ((cr (* cairo-t))) "cairo_pop_group")
-(define-cairo-func void cairo-pop-group-to-source ((cr (* cairo-t))) "cairo_pop_group_to_source")
-(define-cairo-func void cairo-set-operator ((cr (* cairo-t)) (op cairo-operator-t)) "cairo_set_operator")
-(define-cairo-func void cairo-set-source ((cr (* cairo-t)) (source (* cairo-pattern-t))) "cairo_set_source")
-(define-cairo-func void cairo-set-source-rgb ((cr (* cairo-t)) (red double) (green double) (blue double)) "cairo_set_source_rgb")
-(define-cairo-func void cairo-set-source-rgba ((cr (* cairo-t)) (red double) (green double) (blue double) (alpha double)) "cairo_set_source_rgba")
-(define-cairo-func void cairo-set-source-surface ((cr (* cairo-t)) (surface (* cairo-surface-t)) (x double) (y double)) "cairo_set_source_surface")
-(define-cairo-func void cairo-set-tolerance ((cr (* cairo-t)) (tolerance double)) "cairo_set_tolerance")
-(define-cairo-func void cairo-set-antialias ((cr (* cairo-t)) (antialias cairo-antialias-t)) "cairo_set_antialias")
-(define-cairo-func void cairo-set-fill-rule ((cr (* cairo-t)) (fill_rule cairo-fill-rule-t)) "cairo_set_fill_rule")
-(define-cairo-func void cairo-set-line-width ((cr (* cairo-t)) (width double)) "cairo_set_line_width")
-(define-cairo-func void cairo-set-line-cap ((cr (* cairo-t)) (line_cap cairo-line-cap-t)) "cairo_set_line_cap")
-(define-cairo-func void cairo-set-line-join ((cr (* cairo-t)) (line_join cairo-line-join-t)) "cairo_set_line_join")
-(define-cairo-func void cairo-set-dash ((cr (* cairo-t)) (dashes (* double)) (num_dashes int) (offset double)) "cairo_set_dash")
-(define-cairo-func void cairo-set-miter-limit ((cr (* cairo-t)) (limit double)) "cairo_set_miter_limit")
-(define-cairo-func void cairo-translate ((cr (* cairo-t)) (tx double) (ty double)) "cairo_translate")
-(define-cairo-func void cairo-scale ((cr (* cairo-t)) (sx double) (sy double)) "cairo_scale")
-(define-cairo-func void cairo-rotate ((cr (* cairo-t)) (angle double)) "cairo_rotate")
-(define-cairo-func void cairo-transform ((cr (* cairo-t)) (matrix (* cairo-matrix-t))) "cairo_transform")
-(define-cairo-func void cairo-set-matrix ((cr (* cairo-t)) (matrix (* cairo-matrix-t))) "cairo_set_matrix")
-(define-cairo-func void cairo-identity-matrix ((cr (* cairo-t))) "cairo_identity_matrix")
-(define-cairo-func void cairo-user-to-device ((cr (* cairo-t)) (x (* double)) (y (* double))) "cairo_user_to_device")
-(define-cairo-func void cairo-user-to-device-distance ((cr (* cairo-t)) (dx (* double)) (dy (* double))) "cairo_user_to_device_distance")
-(define-cairo-func void cairo-device-to-user ((cr (* cairo-t)) (x (* double)) (y (* double))) "cairo_device_to_user")
-(define-cairo-func void cairo-device-to-user-distance ((cr (* cairo-t)) (dx (* double)) (dy (* double))) "cairo_device_to_user_distance")
-(define-cairo-func void cairo-new-path ((cr (* cairo-t))) "cairo_new_path")
-(define-cairo-func void cairo-move-to ((cr (* cairo-t)) (x double) (y double)) "cairo_move_to")
-(define-cairo-func void cairo-new-sub-path ((cr (* cairo-t))) "cairo_new_sub_path")
-(define-cairo-func void cairo-line-to ((cr (* cairo-t)) (x double) (y double)) "cairo_line_to")
-(define-cairo-func void cairo-curve-to ((cr (* cairo-t)) (x1 double) (y1 double) (x2 double) (y2 double) (x3 double) (y3 double)) "cairo_curve_to")
-(define-cairo-func void cairo-arc ((cr (* cairo-t)) (xc double) (yc double) (radius double) (angle1 double) (angle2 double)) "cairo_arc")
-(define-cairo-func void cairo-arc-negative ((cr (* cairo-t)) (xc double) (yc double) (radius double) (angle1 double) (angle2 double)) "cairo_arc_negative")
-(define-cairo-func void cairo-rel-move-to ((cr (* cairo-t)) (dx double) (dy double)) "cairo_rel_move_to")
-(define-cairo-func void cairo-rel-line-to ((cr (* cairo-t)) (dx double) (dy double)) "cairo_rel_line_to")
-(define-cairo-func void cairo-rel-curve-to ((cr (* cairo-t)) (dx1 double) (dy1 double) (dx2 double) (dy2 double) (dx3 double) (dy3 double)) "cairo_rel_curve_to")
-(define-cairo-func void cairo-rectangle ((cr (* cairo-t)) (x double) (y double) (width double) (height double)) "cairo_rectangle")
-(define-cairo-func void cairo-close-path ((cr (* cairo-t))) "cairo_close_path")
-(define-cairo-func void cairo-path-extents ((cr (* cairo-t)) (x1 (* double)) (y1 (* double)) (x2 (* double)) (y2 (* double))) "cairo_path_extents")
-(define-cairo-func void cairo-paint ((cr (* cairo-t))) "cairo_paint")
-(define-cairo-func void cairo-paint-with-alpha ((cr (* cairo-t)) (alpha double)) "cairo_paint_with_alpha")
-(define-cairo-func void cairo-mask ((cr (* cairo-t)) (pattern (* cairo-pattern-t))) "cairo_mask")
-(define-cairo-func void cairo-mask-surface ((cr (* cairo-t)) (surface (* cairo-surface-t)) (surface_x double) (surface_y double)) "cairo_mask_surface")
-(define-cairo-func void cairo-stroke ((cr (* cairo-t))) "cairo_stroke")
-(define-cairo-func void cairo-stroke-preserve ((cr (* cairo-t))) "cairo_stroke_preserve")
-(define-cairo-func void cairo-fill ((cr (* cairo-t))) "cairo_fill")
-(define-cairo-func void cairo-fill-preserve ((cr (* cairo-t))) "cairo_fill_preserve")
-(define-cairo-func void cairo-copy-page ((cr (* cairo-t))) "cairo_copy_page")
-(define-cairo-func void cairo-show-page ((cr (* cairo-t))) "cairo_show_page")
-(define-cairo-func cairo-bool-t cairo-in-stroke ((cr (* cairo-t)) (x double) (y double)) "cairo_in_stroke")
-(define-cairo-func cairo-bool-t cairo-in-fill ((cr (* cairo-t)) (x double) (y double)) "cairo_in_fill")
-(define-cairo-func cairo-bool-t cairo-in-clip ((cr (* cairo-t)) (x double) (y double)) "cairo_in_clip")
-(define-cairo-func void cairo-stroke-extents ((cr (* cairo-t)) (x1 (* double)) (y1 (* double)) (x2 (* double)) (y2 (* double))) "cairo_stroke_extents")
-(define-cairo-func void cairo-fill-extents ((cr (* cairo-t)) (x1 (* double)) (y1 (* double)) (x2 (* double)) (y2 (* double))) "cairo_fill_extents")
-(define-cairo-func void cairo-reset-clip ((cr (* cairo-t))) "cairo_reset_clip")
-(define-cairo-func void cairo-clip ((cr (* cairo-t))) "cairo_clip")
-(define-cairo-func void cairo-clip-preserve ((cr (* cairo-t))) "cairo_clip_preserve")
-(define-cairo-func void cairo-clip-extents ((cr (* cairo-t)) (x1 (* double)) (y1 (* double)) (x2 (* double)) (y2 (* double))) "cairo_clip_extents")
-(define-cairo-func (* cairo-rectangle-list-t) cairo-copy-clip-rectangle-list ((cr (* cairo-t))) "cairo_copy_clip_rectangle_list")
-(define-cairo-func void cairo-rectangle-list-destroy ((rectangle_list (* cairo-rectangle-list-t))) "cairo_rectangle_list_destroy")
-(define-cairo-func (* cairo-glyph-t) cairo-glyph-allocate ((num_glyphs int)) "cairo_glyph_allocate")
-(define-cairo-func void cairo-glyph-free ((glyphs (* cairo-glyph-t))) "cairo_glyph_free")
-(define-cairo-func (* cairo-text-cluster-t) cairo-text-cluster-allocate ((num_clusters int)) "cairo_text_cluster_allocate")
-(define-cairo-func void cairo-text-cluster-free ((clusters (* cairo-text-cluster-t))) "cairo_text_cluster_free")
-(define-cairo-func (* cairo-font-options-t) cairo-font-options-create () "cairo_font_options_create")
-(define-cairo-func (* cairo-font-options-t) cairo-font-options-copy ((original (* cairo-font-options-t))) "cairo_font_options_copy")
-(define-cairo-func void cairo-font-options-destroy ((options (* cairo-font-options-t))) "cairo_font_options_destroy")
-(define-cairo-func cairo-status-t cairo-font-options-status ((options (* cairo-font-options-t))) "cairo_font_options_status")
-(define-cairo-func void cairo-font-options-merge ((options (* cairo-font-options-t)) (other (* cairo-font-options-t))) "cairo_font_options_merge")
-(define-cairo-func cairo-bool-t cairo-font-options-equal ((options (* cairo-font-options-t)) (other (* cairo-font-options-t))) "cairo_font_options_equal")
-(define-cairo-func unsigned-long cairo-font-options-hash ((options (* cairo-font-options-t))) "cairo_font_options_hash")
-(define-cairo-func void cairo-font-options-set-antialias ((options (* cairo-font-options-t)) (antialias cairo-antialias-t)) "cairo_font_options_set_antialias")
-(define-cairo-func cairo-antialias-t cairo-font-options-get-antialias ((options (* cairo-font-options-t))) "cairo_font_options_get_antialias")
-(define-cairo-func void cairo-font-options-set-subpixel-order ((options (* cairo-font-options-t)) (subpixel_order cairo-subpixel-order-t)) "cairo_font_options_set_subpixel_order")
-(define-cairo-func cairo-subpixel-order-t cairo-font-options-get-subpixel-order ((options (* cairo-font-options-t))) "cairo_font_options_get_subpixel_order")
-(define-cairo-func void cairo-font-options-set-hint-style ((options (* cairo-font-options-t)) (hint_style cairo-hint-style-t)) "cairo_font_options_set_hint_style")
-(define-cairo-func cairo-hint-style-t cairo-font-options-get-hint-style ((options (* cairo-font-options-t))) "cairo_font_options_get_hint_style")
-(define-cairo-func void cairo-font-options-set-hint-metrics ((options (* cairo-font-options-t)) (hint_metrics cairo-hint-metrics-t)) "cairo_font_options_set_hint_metrics")
-(define-cairo-func cairo-hint-metrics-t cairo-font-options-get-hint-metrics ((options (* cairo-font-options-t))) "cairo_font_options_get_hint_metrics")
-(define-cairo-func void cairo-select-font-face ((cr (* cairo-t)) (family string) (slant cairo-font-slant-t) (weight cairo-font-weight-t)) "cairo_select_font_face")
-(define-cairo-func void cairo-set-font-size ((cr (* cairo-t)) (size double)) "cairo_set_font_size")
-(define-cairo-func void cairo-set-font-matrix ((cr (* cairo-t)) (matrix (* cairo-matrix-t))) "cairo_set_font_matrix")
-(define-cairo-func void cairo-get-font-matrix ((cr (* cairo-t)) (matrix (* cairo-matrix-t))) "cairo_get_font_matrix")
-(define-cairo-func void cairo-set-font-options ((cr (* cairo-t)) (options (* cairo-font-options-t))) "cairo_set_font_options")
-(define-cairo-func void cairo-get-font-options ((cr (* cairo-t)) (options (* cairo-font-options-t))) "cairo_get_font_options")
-(define-cairo-func void cairo-set-font-face ((cr (* cairo-t)) (font_face (* cairo-font-face-t))) "cairo_set_font_face")
-(define-cairo-func (* cairo-font-face-t) cairo-get-font-face ((cr (* cairo-t))) "cairo_get_font_face")
-(define-cairo-func void cairo-set-scaled-font ((cr (* cairo-t)) (scaled_font (* cairo-scaled-font-t))) "cairo_set_scaled_font")
-(define-cairo-func (* cairo-scaled-font-t) cairo-get-scaled-font ((cr (* cairo-t))) "cairo_get_scaled_font")
-(define-cairo-func void cairo-show-text ((cr (* cairo-t)) (utf8 string)) "cairo_show_text")
-(define-cairo-func void cairo-show-glyphs ((cr (* cairo-t)) (glyphs (* cairo-glyph-t)) (num_glyphs int)) "cairo_show_glyphs")
-(define-cairo-func void cairo-show-text-glyphs ((cr (* cairo-t)) (utf8 string) (utf8_len int) (glyphs (* cairo-glyph-t)) (num_glyphs int) (clusters (* cairo-text-cluster-t)) (num_clusters int) (cluster_flags cairo-text-cluster-flags-t)) "cairo_show_text_glyphs")
-(define-cairo-func void cairo-text-path ((cr (* cairo-t)) (utf8 string)) "cairo_text_path")
-(define-cairo-func void cairo-glyph-path ((cr (* cairo-t)) (glyphs (* cairo-glyph-t)) (num_glyphs int)) "cairo_glyph_path")
-(define-cairo-func void cairo-text-extents ((cr (* cairo-t)) (utf8 string) (extents (* cairo-text-extents-t))) "cairo_text_extents")
-(define-cairo-func void cairo-glyph-extents ((cr (* cairo-t)) (glyphs (* cairo-glyph-t)) (num_glyphs int) (extents (* cairo-text-extents-t))) "cairo_glyph_extents")
-(define-cairo-func void cairo-font-extents ((cr (* cairo-t)) (extents (* cairo-font-extents-t))) "cairo_font_extents")
-(define-cairo-func (* cairo-font-face-t) cairo-font-face-reference ((font_face (* cairo-font-face-t))) "cairo_font_face_reference")
-(define-cairo-func void cairo-font-face-destroy ((font_face (* cairo-font-face-t))) "cairo_font_face_destroy")
-(define-cairo-func unsigned-int cairo-font-face-get-reference-count ((font_face (* cairo-font-face-t))) "cairo_font_face_get_reference_count")
-(define-cairo-func cairo-status-t cairo-font-face-status ((font_face (* cairo-font-face-t))) "cairo_font_face_status")
-(define-cairo-func cairo-font-type-t cairo-font-face-get-type ((font_face (* cairo-font-face-t))) "cairo_font_face_get_type")
-(define-cairo-func void* cairo-font-face-get-user-data ((font_face (* cairo-font-face-t)) (key (* cairo-user-data-key-t))) "cairo_font_face_get_user_data")
-(define-cairo-func cairo-status-t cairo-font-face-set-user-data ((font_face (* cairo-font-face-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_font_face_set_user_data")
-(define-cairo-func (* cairo-scaled-font-t) cairo-scaled-font-create ((font_face (* cairo-font-face-t)) (font_matrix (* cairo-matrix-t)) (ctm (* cairo-matrix-t)) (options (* cairo-font-options-t))) "cairo_scaled_font_create")
-(define-cairo-func (* cairo-scaled-font-t) cairo-scaled-font-reference ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_reference")
-(define-cairo-func void cairo-scaled-font-destroy ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_destroy")
-(define-cairo-func unsigned-int cairo-scaled-font-get-reference-count ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_get_reference_count")
-(define-cairo-func cairo-status-t cairo-scaled-font-status ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_status")
-(define-cairo-func cairo-font-type-t cairo-scaled-font-get-type ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_get_type")
-(define-cairo-func void* cairo-scaled-font-get-user-data ((scaled_font (* cairo-scaled-font-t)) (key (* cairo-user-data-key-t))) "cairo_scaled_font_get_user_data")
-(define-cairo-func cairo-status-t cairo-scaled-font-set-user-data ((scaled_font (* cairo-scaled-font-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_scaled_font_set_user_data")
-(define-cairo-func void cairo-scaled-font-extents ((scaled_font (* cairo-scaled-font-t)) (extents (* cairo-font-extents-t))) "cairo_scaled_font_extents")
-(define-cairo-func void cairo-scaled-font-text-extents ((scaled_font (* cairo-scaled-font-t)) (utf8 string) (extents (* cairo-text-extents-t))) "cairo_scaled_font_text_extents")
-(define-cairo-func void cairo-scaled-font-glyph-extents ((scaled_font (* cairo-scaled-font-t)) (glyphs (* cairo-glyph-t)) (num_glyphs int) (extents (* cairo-text-extents-t))) "cairo_scaled_font_glyph_extents")
-(define-cairo-func cairo-status-t cairo-scaled-font-text-to-glyphs ((scaled_font (* cairo-scaled-font-t)) (x double) (y double) (utf8 string) (utf8_len int) (glyphs (* cairo-glyph-t*)) (num_glyphs (* int)) (clusters (* cairo-text-cluster-t*)) (num_clusters (* int)) (cluster_flags (* cairo-text-cluster-flags-t))) "cairo_scaled_font_text_to_glyphs")
-(define-cairo-func (* cairo-font-face-t) cairo-scaled-font-get-font-face ((scaled_font (* cairo-scaled-font-t))) "cairo_scaled_font_get_font_face")
-(define-cairo-func void cairo-scaled-font-get-font-matrix ((scaled_font (* cairo-scaled-font-t)) (font_matrix (* cairo-matrix-t))) "cairo_scaled_font_get_font_matrix")
-(define-cairo-func void cairo-scaled-font-get-ctm ((scaled_font (* cairo-scaled-font-t)) (ctm (* cairo-matrix-t))) "cairo_scaled_font_get_ctm")
-(define-cairo-func void cairo-scaled-font-get-scale-matrix ((scaled_font (* cairo-scaled-font-t)) (scale_matrix (* cairo-matrix-t))) "cairo_scaled_font_get_scale_matrix")
-(define-cairo-func void cairo-scaled-font-get-font-options ((scaled_font (* cairo-scaled-font-t)) (options (* cairo-font-options-t))) "cairo_scaled_font_get_font_options")
-(define-cairo-func (* cairo-font-face-t) cairo-toy-font-face-create ((family string) (slant cairo-font-slant-t) (weight cairo-font-weight-t)) "cairo_toy_font_face_create")
-(define-cairo-func string cairo-toy-font-face-get-family ((font_face (* cairo-font-face-t))) "cairo_toy_font_face_get_family")
-(define-cairo-func cairo-font-slant-t cairo-toy-font-face-get-slant ((font_face (* cairo-font-face-t))) "cairo_toy_font_face_get_slant")
-(define-cairo-func cairo-font-weight-t cairo-toy-font-face-get-weight ((font_face (* cairo-font-face-t))) "cairo_toy_font_face_get_weight")
-(define-cairo-func (* cairo-font-face-t) cairo-user-font-face-create () "cairo_user_font_face_create")
-(define-cairo-func void cairo-user-font-face-set-init-func ((font_face (* cairo-font-face-t)) (init_func (* cairo-user-scaled-font-init-func-t))) "cairo_user_font_face_set_init_func")
-(define-cairo-func void cairo-user-font-face-set-render-glyph-func ((font_face (* cairo-font-face-t)) (render_glyph_func (* cairo-user-scaled-font-render-glyph-func-t))) "cairo_user_font_face_set_render_glyph_func")
-(define-cairo-func void cairo-user-font-face-set-text-to-glyphs-func ((font_face (* cairo-font-face-t)) (text_to_glyphs_func (* cairo-user-scaled-font-text-to-glyphs-func-t))) "cairo_user_font_face_set_text_to_glyphs_func")
-(define-cairo-func void cairo-user-font-face-set-unicode-to-glyph-func ((font_face (* cairo-font-face-t)) (unicode_to_glyph_func (* cairo-user-scaled-font-unicode-to-glyph-func-t))) "cairo_user_font_face_set_unicode_to_glyph_func")
-(define-cairo-func (* cairo-user-scaled-font-init-func-t) cairo-user-font-face-get-init-func ((font_face (* cairo-font-face-t))) "cairo_user_font_face_get_init_func")
-(define-cairo-func (* cairo-user-scaled-font-render-glyph-func-t) cairo-user-font-face-get-render-glyph-func ((font_face (* cairo-font-face-t))) "cairo_user_font_face_get_render_glyph_func")
-(define-cairo-func (* cairo-user-scaled-font-text-to-glyphs-func-t) cairo-user-font-face-get-text-to-glyphs-func ((font_face (* cairo-font-face-t))) "cairo_user_font_face_get_text_to_glyphs_func")
-(define-cairo-func (* cairo-user-scaled-font-unicode-to-glyph-func-t) cairo-user-font-face-get-unicode-to-glyph-func ((font_face (* cairo-font-face-t))) "cairo_user_font_face_get_unicode_to_glyph_func")
-(define-cairo-func cairo-operator-t cairo-get-operator ((cr (* cairo-t))) "cairo_get_operator")
-(define-cairo-func (* cairo-pattern-t) cairo-get-source ((cr (* cairo-t))) "cairo_get_source")
-(define-cairo-func double cairo-get-tolerance ((cr (* cairo-t))) "cairo_get_tolerance")
-(define-cairo-func cairo-antialias-t cairo-get-antialias ((cr (* cairo-t))) "cairo_get_antialias")
-(define-cairo-func cairo-bool-t cairo-has-current-point ((cr (* cairo-t))) "cairo_has_current_point")
-(define-cairo-func void cairo-get-current-point ((cr (* cairo-t)) (x (* double)) (y (* double))) "cairo_get_current_point")
-(define-cairo-func cairo-fill-rule-t cairo-get-fill-rule ((cr (* cairo-t))) "cairo_get_fill_rule")
-(define-cairo-func double cairo-get-line-width ((cr (* cairo-t))) "cairo_get_line_width")
-(define-cairo-func cairo-line-cap-t cairo-get-line-cap ((cr (* cairo-t))) "cairo_get_line_cap")
-(define-cairo-func cairo-line-join-t cairo-get-line-join ((cr (* cairo-t))) "cairo_get_line_join")
-(define-cairo-func double cairo-get-miter-limit ((cr (* cairo-t))) "cairo_get_miter_limit")
-(define-cairo-func int cairo-get-dash-count ((cr (* cairo-t))) "cairo_get_dash_count")
-(define-cairo-func void cairo-get-dash ((cr (* cairo-t)) (dashes (* double)) (offset (* double))) "cairo_get_dash")
-(define-cairo-func void cairo-get-matrix ((cr (* cairo-t)) (matrix (* cairo-matrix-t))) "cairo_get_matrix")
-(define-cairo-func (* cairo-surface-t) cairo-get-target ((cr (* cairo-t))) "cairo_get_target")
-(define-cairo-func (* cairo-surface-t) cairo-get-group-target ((cr (* cairo-t))) "cairo_get_group_target")
-(define-cairo-func (* cairo-path-t) cairo-copy-path ((cr (* cairo-t))) "cairo_copy_path")
-(define-cairo-func (* cairo-path-t) cairo-copy-path-flat ((cr (* cairo-t))) "cairo_copy_path_flat")
-(define-cairo-func void cairo-append-path ((cr (* cairo-t)) (path (* cairo-path-t))) "cairo_append_path")
-(define-cairo-func void cairo-path-destroy ((path (* cairo-path-t))) "cairo_path_destroy")
-(define-cairo-func cairo-status-t cairo-status ((cr (* cairo-t))) "cairo_status")
-(define-cairo-func string cairo-status-to-string ((status cairo-status-t)) "cairo_status_to_string")
-(define-cairo-func (* cairo-device-t) cairo-device-reference ((device (* cairo-device-t))) "cairo_device_reference")
-(define-cairo-func cairo-device-type-t cairo-device-get-type ((device (* cairo-device-t))) "cairo_device_get_type")
-(define-cairo-func cairo-status-t cairo-device-status ((device (* cairo-device-t))) "cairo_device_status")
-(define-cairo-func cairo-status-t cairo-device-acquire ((device (* cairo-device-t))) "cairo_device_acquire")
-(define-cairo-func void cairo-device-release ((device (* cairo-device-t))) "cairo_device_release")
-(define-cairo-func void cairo-device-flush ((device (* cairo-device-t))) "cairo_device_flush")
-(define-cairo-func void cairo-device-finish ((device (* cairo-device-t))) "cairo_device_finish")
-(define-cairo-func void cairo-device-destroy ((device (* cairo-device-t))) "cairo_device_destroy")
-(define-cairo-func unsigned-int cairo-device-get-reference-count ((device (* cairo-device-t))) "cairo_device_get_reference_count")
-(define-cairo-func void* cairo-device-get-user-data ((device (* cairo-device-t)) (key (* cairo-user-data-key-t))) "cairo_device_get_user_data")
-(define-cairo-func cairo-status-t cairo-device-set-user-data ((device (* cairo-device-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_device_set_user_data")
-(define-cairo-func (* cairo-surface-t) cairo-surface-create-similar ((other (* cairo-surface-t)) (content cairo-content-t) (width int) (height int)) "cairo_surface_create_similar")
-(define-cairo-func (* cairo-surface-t) cairo-surface-create-similar-image ((other (* cairo-surface-t)) (format cairo-format-t) (width int) (height int)) "cairo_surface_create_similar_image")
-(define-cairo-func (* cairo-surface-t) cairo-surface-map-to-image ((surface (* cairo-surface-t)) (extents (* cairo-rectangle-int-t))) "cairo_surface_map_to_image")
-(define-cairo-func void cairo-surface-unmap-image ((surface (* cairo-surface-t)) (image (* cairo-surface-t))) "cairo_surface_unmap_image")
-(define-cairo-func (* cairo-surface-t) cairo-surface-create-for-rectangle ((target (* cairo-surface-t)) (x double) (y double) (width double) (height double)) "cairo_surface_create_for_rectangle")
-(define-cairo-func (* cairo-surface-t) cairo-surface-create-observer ((target (* cairo-surface-t)) (mode cairo-surface-observer-mode-t)) "cairo_surface_create_observer")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-paint-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_paint_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-mask-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_mask_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-fill-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_fill_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-stroke-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_stroke_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-glyphs-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_glyphs_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-flush-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_flush_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-add-finish-callback ((abstract_surface (* cairo-surface-t)) (func (* cairo-surface-observer-callback-t)) (data void*)) "cairo_surface_observer_add_finish_callback")
-(define-cairo-func cairo-status-t cairo-surface-observer-print ((surface (* cairo-surface-t)) (write_func (* cairo-write-func-t)) (closure void*)) "cairo_surface_observer_print")
-(define-cairo-func double cairo-surface-observer-elapsed ((surface (* cairo-surface-t))) "cairo_surface_observer_elapsed")
-(define-cairo-func cairo-status-t cairo-device-observer-print ((device (* cairo-device-t)) (write_func (* cairo-write-func-t)) (closure void*)) "cairo_device_observer_print")
-(define-cairo-func double cairo-device-observer-elapsed ((device (* cairo-device-t))) "cairo_device_observer_elapsed")
-(define-cairo-func double cairo-device-observer-paint-elapsed ((device (* cairo-device-t))) "cairo_device_observer_paint_elapsed")
-(define-cairo-func double cairo-device-observer-mask-elapsed ((device (* cairo-device-t))) "cairo_device_observer_mask_elapsed")
-(define-cairo-func double cairo-device-observer-fill-elapsed ((device (* cairo-device-t))) "cairo_device_observer_fill_elapsed")
-(define-cairo-func double cairo-device-observer-stroke-elapsed ((device (* cairo-device-t))) "cairo_device_observer_stroke_elapsed")
-(define-cairo-func double cairo-device-observer-glyphs-elapsed ((device (* cairo-device-t))) "cairo_device_observer_glyphs_elapsed")
-(define-cairo-func (* cairo-surface-t) cairo-surface-reference ((surface (* cairo-surface-t))) "cairo_surface_reference")
-(define-cairo-func void cairo-surface-finish ((surface (* cairo-surface-t))) "cairo_surface_finish")
-(define-cairo-func void cairo-surface-destroy ((surface (* cairo-surface-t))) "cairo_surface_destroy")
-(define-cairo-func (* cairo-device-t) cairo-surface-get-device ((surface (* cairo-surface-t))) "cairo_surface_get_device")
-(define-cairo-func unsigned-int cairo-surface-get-reference-count ((surface (* cairo-surface-t))) "cairo_surface_get_reference_count")
-(define-cairo-func cairo-status-t cairo-surface-status ((surface (* cairo-surface-t))) "cairo_surface_status")
-(define-cairo-func cairo-surface-type-t cairo-surface-get-type ((surface (* cairo-surface-t))) "cairo_surface_get_type")
-(define-cairo-func cairo-content-t cairo-surface-get-content ((surface (* cairo-surface-t))) "cairo_surface_get_content")
-(define-cairo-func cairo-status-t cairo-surface-write-to-png ((surface (* cairo-surface-t)) (filename string)) "cairo_surface_write_to_png")
-(define-cairo-func cairo-status-t cairo-surface-write-to-png-stream ((surface (* cairo-surface-t)) (write_func (* cairo-write-func-t)) (closure void*)) "cairo_surface_write_to_png_stream")
-(define-cairo-func void* cairo-surface-get-user-data ((surface (* cairo-surface-t)) (key (* cairo-user-data-key-t))) "cairo_surface_get_user_data")
-(define-cairo-func cairo-status-t cairo-surface-set-user-data ((surface (* cairo-surface-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_surface_set_user_data")
-(define-cairo-func void cairo-surface-get-mime-data ((surface (* cairo-surface-t)) (mime_type string) (data (* unsigned-8*)) (length (* unsigned-long))) "cairo_surface_get_mime_data")
-(define-cairo-func cairo-status-t cairo-surface-set-mime-data ((surface (* cairo-surface-t)) (mime_type string) (data (* unsigned-8)) (length unsigned-long) (destroy cairo-destroy-func-t) (closure void*)) "cairo_surface_set_mime_data")
-(define-cairo-func cairo-bool-t cairo-surface-supports-mime-type ((surface (* cairo-surface-t)) (mime_type string)) "cairo_surface_supports_mime_type")
-(define-cairo-func void cairo-surface-get-font-options ((surface (* cairo-surface-t)) (options (* cairo-font-options-t))) "cairo_surface_get_font_options")
-(define-cairo-func void cairo-surface-flush ((surface (* cairo-surface-t))) "cairo_surface_flush")
-(define-cairo-func void cairo-surface-mark-dirty ((surface (* cairo-surface-t))) "cairo_surface_mark_dirty")
-(define-cairo-func void cairo-surface-mark-dirty-rectangle ((surface (* cairo-surface-t)) (x int) (y int) (width int) (height int)) "cairo_surface_mark_dirty_rectangle")
-(define-cairo-func void cairo-surface-set-device-scale ((surface (* cairo-surface-t)) (x_scale double) (y_scale double)) "cairo_surface_set_device_scale")
-(define-cairo-func void cairo-surface-get-device-scale ((surface (* cairo-surface-t)) (x_scale (* double)) (y_scale (* double))) "cairo_surface_get_device_scale")
-(define-cairo-func void cairo-surface-set-device-offset ((surface (* cairo-surface-t)) (x_offset double) (y_offset double)) "cairo_surface_set_device_offset")
-(define-cairo-func void cairo-surface-get-device-offset ((surface (* cairo-surface-t)) (x_offset (* double)) (y_offset (* double))) "cairo_surface_get_device_offset")
-(define-cairo-func void cairo-surface-set-fallback-resolution ((surface (* cairo-surface-t)) (x_pixels_per_inch double) (y_pixels_per_inch double)) "cairo_surface_set_fallback_resolution")
-(define-cairo-func void cairo-surface-get-fallback-resolution ((surface (* cairo-surface-t)) (x_pixels_per_inch (* double)) (y_pixels_per_inch (* double))) "cairo_surface_get_fallback_resolution")
-(define-cairo-func void cairo-surface-copy-page ((surface (* cairo-surface-t))) "cairo_surface_copy_page")
-(define-cairo-func void cairo-surface-show-page ((surface (* cairo-surface-t))) "cairo_surface_show_page")
-(define-cairo-func cairo-bool-t cairo-surface-has-show-text-glyphs ((surface (* cairo-surface-t))) "cairo_surface_has_show_text_glyphs")
-(define-cairo-func (* cairo-surface-t) cairo-image-surface-create ((format cairo-format-t) (width int) (height int)) "cairo_image_surface_create")
-(define-cairo-func int cairo-format-stride-for-width ((format cairo-format-t) (width int)) "cairo_format_stride_for_width")
-(define-cairo-func (* cairo-surface-t) cairo-image-surface-create-for-data ((data (* unsigned-8)) (format cairo-format-t) (width int) (height int) (stride int)) "cairo_image_surface_create_for_data")
-(define-cairo-func (* unsigned-8) cairo-image-surface-get-data ((surface (* cairo-surface-t))) "cairo_image_surface_get_data")
-(define-cairo-func cairo-format-t cairo-image-surface-get-format ((surface (* cairo-surface-t))) "cairo_image_surface_get_format")
-(define-cairo-func int cairo-image-surface-get-width ((surface (* cairo-surface-t))) "cairo_image_surface_get_width")
-(define-cairo-func int cairo-image-surface-get-height ((surface (* cairo-surface-t))) "cairo_image_surface_get_height")
-(define-cairo-func int cairo-image-surface-get-stride ((surface (* cairo-surface-t))) "cairo_image_surface_get_stride")
-(define-cairo-func (* cairo-surface-t) cairo-image-surface-create-from-png ((filename string)) "cairo_image_surface_create_from_png")
-(define-cairo-func (* cairo-surface-t) cairo-image-surface-create-from-png-stream ((read_func (* cairo-read-func-t)) (closure void*)) "cairo_image_surface_create_from_png_stream")
-(define-cairo-func (* cairo-surface-t) cairo-recording-surface-create ((content cairo-content-t) (extents (* cairo-rectangle-t))) "cairo_recording_surface_create")
-(define-cairo-func void cairo-recording-surface-ink-extents ((surface (* cairo-surface-t)) (x0 (* double)) (y0 (* double)) (width (* double)) (height (* double))) "cairo_recording_surface_ink_extents")
-(define-cairo-func cairo-bool-t cairo-recording-surface-get-extents ((surface (* cairo-surface-t)) (extents (* cairo-rectangle-t))) "cairo_recording_surface_get_extents")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-raster-source ((user_data void*) (content cairo-content-t) (width int) (height int)) "cairo_pattern_create_raster_source")
-(define-cairo-func void cairo-raster-source-pattern-set-callback-data ((pattern (* cairo-pattern-t)) (data void*)) "cairo_raster_source_pattern_set_callback_data")
-(define-cairo-func void* cairo-raster-source-pattern-get-callback-data ((pattern (* cairo-pattern-t))) "cairo_raster_source_pattern_get_callback_data")
-(define-cairo-func void cairo-raster-source-pattern-set-acquire ((pattern (* cairo-pattern-t)) (acquire (* cairo-raster-source-acquire-func-t)) (release (* cairo-raster-source-release-func-t))) "cairo_raster_source_pattern_set_acquire")
-(define-cairo-func void cairo-raster-source-pattern-get-acquire ((pattern (* cairo-pattern-t)) (acquire (* cairo-raster-source-acquire-func-t*)) (release (* cairo-raster-source-release-func-t*))) "cairo_raster_source_pattern_get_acquire")
-(define-cairo-func void cairo-raster-source-pattern-set-snapshot ((pattern (* cairo-pattern-t)) (snapshot (* cairo-raster-source-snapshot-func-t))) "cairo_raster_source_pattern_set_snapshot")
-(define-cairo-func (* cairo-raster-source-snapshot-func-t) cairo-raster-source-pattern-get-snapshot ((pattern (* cairo-pattern-t))) "cairo_raster_source_pattern_get_snapshot")
-(define-cairo-func void cairo-raster-source-pattern-set-copy ((pattern (* cairo-pattern-t)) (copy (* cairo-raster-source-copy-func-t))) "cairo_raster_source_pattern_set_copy")
-(define-cairo-func (* cairo-raster-source-copy-func-t) cairo-raster-source-pattern-get-copy ((pattern (* cairo-pattern-t))) "cairo_raster_source_pattern_get_copy")
-(define-cairo-func void cairo-raster-source-pattern-set-finish ((pattern (* cairo-pattern-t)) (finish (* cairo-raster-source-finish-func-t))) "cairo_raster_source_pattern_set_finish")
-(define-cairo-func (* cairo-raster-source-finish-func-t) cairo-raster-source-pattern-get-finish ((pattern (* cairo-pattern-t))) "cairo_raster_source_pattern_get_finish")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-rgb ((red double) (green double) (blue double)) "cairo_pattern_create_rgb")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-rgba ((red double) (green double) (blue double) (alpha double)) "cairo_pattern_create_rgba")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-for-surface ((surface (* cairo-surface-t))) "cairo_pattern_create_for_surface")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-linear ((x0 double) (y0 double) (x1 double) (y1 double)) "cairo_pattern_create_linear")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-radial ((cx0 double) (cy0 double) (radius0 double) (cx1 double) (cy1 double) (radius1 double)) "cairo_pattern_create_radial")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-create-mesh () "cairo_pattern_create_mesh")
-(define-cairo-func (* cairo-pattern-t) cairo-pattern-reference ((pattern (* cairo-pattern-t))) "cairo_pattern_reference")
-(define-cairo-func void cairo-pattern-destroy ((pattern (* cairo-pattern-t))) "cairo_pattern_destroy")
-(define-cairo-func unsigned-int cairo-pattern-get-reference-count ((pattern (* cairo-pattern-t))) "cairo_pattern_get_reference_count")
-(define-cairo-func cairo-status-t cairo-pattern-status ((pattern (* cairo-pattern-t))) "cairo_pattern_status")
-(define-cairo-func void* cairo-pattern-get-user-data ((pattern (* cairo-pattern-t)) (key (* cairo-user-data-key-t))) "cairo_pattern_get_user_data")
-(define-cairo-func cairo-status-t cairo-pattern-set-user-data ((pattern (* cairo-pattern-t)) (key (* cairo-user-data-key-t)) (user_data void*) (destroy cairo-destroy-func-t)) "cairo_pattern_set_user_data")
-(define-cairo-func cairo-pattern-type-t cairo-pattern-get-type ((pattern (* cairo-pattern-t))) "cairo_pattern_get_type")
-(define-cairo-func void cairo-pattern-add-color-stop-rgb ((pattern (* cairo-pattern-t)) (offset double) (red double) (green double) (blue double)) "cairo_pattern_add_color_stop_rgb")
-(define-cairo-func void cairo-pattern-add-color-stop-rgba ((pattern (* cairo-pattern-t)) (offset double) (red double) (green double) (blue double) (alpha double)) "cairo_pattern_add_color_stop_rgba")
-(define-cairo-func void cairo-mesh-pattern-begin-patch ((pattern (* cairo-pattern-t))) "cairo_mesh_pattern_begin_patch")
-(define-cairo-func void cairo-mesh-pattern-end-patch ((pattern (* cairo-pattern-t))) "cairo_mesh_pattern_end_patch")
-(define-cairo-func void cairo-mesh-pattern-curve-to ((pattern (* cairo-pattern-t)) (x1 double) (y1 double) (x2 double) (y2 double) (x3 double) (y3 double)) "cairo_mesh_pattern_curve_to")
-(define-cairo-func void cairo-mesh-pattern-line-to ((pattern (* cairo-pattern-t)) (x double) (y double)) "cairo_mesh_pattern_line_to")
-(define-cairo-func void cairo-mesh-pattern-move-to ((pattern (* cairo-pattern-t)) (x double) (y double)) "cairo_mesh_pattern_move_to")
-(define-cairo-func void cairo-mesh-pattern-set-control-point ((pattern (* cairo-pattern-t)) (point_num unsigned-int) (x double) (y double)) "cairo_mesh_pattern_set_control_point")
-(define-cairo-func void cairo-mesh-pattern-set-corner-color-rgb ((pattern (* cairo-pattern-t)) (corner_num unsigned-int) (red double) (green double) (blue double)) "cairo_mesh_pattern_set_corner_color_rgb")
-(define-cairo-func void cairo-mesh-pattern-set-corner-color-rgba ((pattern (* cairo-pattern-t)) (corner_num unsigned-int) (red double) (green double) (blue double) (alpha double)) "cairo_mesh_pattern_set_corner_color_rgba")
-(define-cairo-func void cairo-pattern-set-matrix ((pattern (* cairo-pattern-t)) (matrix (* cairo-matrix-t))) "cairo_pattern_set_matrix")
-(define-cairo-func void cairo-pattern-get-matrix ((pattern (* cairo-pattern-t)) (matrix (* cairo-matrix-t))) "cairo_pattern_get_matrix")
-(define-cairo-func void cairo-pattern-set-extend ((pattern (* cairo-pattern-t)) (extend cairo-extend-t)) "cairo_pattern_set_extend")
-(define-cairo-func cairo-extend-t cairo-pattern-get-extend ((pattern (* cairo-pattern-t))) "cairo_pattern_get_extend")
-(define-cairo-func void cairo-pattern-set-filter ((pattern (* cairo-pattern-t)) (filter cairo-filter-t)) "cairo_pattern_set_filter")
-(define-cairo-func cairo-filter-t cairo-pattern-get-filter ((pattern (* cairo-pattern-t))) "cairo_pattern_get_filter")
-(define-cairo-func cairo-status-t cairo-pattern-get-rgba ((pattern (* cairo-pattern-t)) (red (* double)) (green (* double)) (blue (* double)) (alpha (* double))) "cairo_pattern_get_rgba")
-(define-cairo-func cairo-status-t cairo-pattern-get-surface ((pattern (* cairo-pattern-t)) (surface (* cairo-surface-t*))) "cairo_pattern_get_surface")
-(define-cairo-func cairo-status-t cairo-pattern-get-color-stop-rgba ((pattern (* cairo-pattern-t)) (index int) (offset (* double)) (red (* double)) (green (* double)) (blue (* double)) (alpha (* double))) "cairo_pattern_get_color_stop_rgba")
-(define-cairo-func cairo-status-t cairo-pattern-get-color-stop-count ((pattern (* cairo-pattern-t)) (count (* int))) "cairo_pattern_get_color_stop_count")
-(define-cairo-func cairo-status-t cairo-pattern-get-linear-points ((pattern (* cairo-pattern-t)) (x0 (* double)) (y0 (* double)) (x1 (* double)) (y1 (* double))) "cairo_pattern_get_linear_points")
-(define-cairo-func cairo-status-t cairo-pattern-get-radial-circles ((pattern (* cairo-pattern-t)) (x0 (* double)) (y0 (* double)) (r0 (* double)) (x1 (* double)) (y1 (* double)) (r1 (* double))) "cairo_pattern_get_radial_circles")
-(define-cairo-func cairo-status-t cairo-mesh-pattern-get-patch-count ((pattern (* cairo-pattern-t)) (count (* unsigned-int))) "cairo_mesh_pattern_get_patch_count")
-(define-cairo-func (* cairo-path-t) cairo-mesh-pattern-get-path ((pattern (* cairo-pattern-t)) (patch_num unsigned-int)) "cairo_mesh_pattern_get_path")
-(define-cairo-func cairo-status-t cairo-mesh-pattern-get-corner-color-rgba ((pattern (* cairo-pattern-t)) (patch_num unsigned-int) (corner_num unsigned-int) (red (* double)) (green (* double)) (blue (* double)) (alpha (* double))) "cairo_mesh_pattern_get_corner_color_rgba")
-(define-cairo-func cairo-status-t cairo-mesh-pattern-get-control-point ((pattern (* cairo-pattern-t)) (patch_num unsigned-int) (point_num unsigned-int) (x (* double)) (y (* double))) "cairo_mesh_pattern_get_control_point")
-(define-cairo-func void cairo-matrix-init ((matrix (* cairo-matrix-t)) (xx double) (yx double) (xy double) (yy double) (x0 double) (y0 double)) "cairo_matrix_init")
-(define-cairo-func void cairo-matrix-init-identity ((matrix (* cairo-matrix-t))) "cairo_matrix_init_identity")
-(define-cairo-func void cairo-matrix-init-translate ((matrix (* cairo-matrix-t)) (tx double) (ty double)) "cairo_matrix_init_translate")
-(define-cairo-func void cairo-matrix-init-scale ((matrix (* cairo-matrix-t)) (sx double) (sy double)) "cairo_matrix_init_scale")
-(define-cairo-func void cairo-matrix-init-rotate ((matrix (* cairo-matrix-t)) (radians double)) "cairo_matrix_init_rotate")
-(define-cairo-func void cairo-matrix-translate ((matrix (* cairo-matrix-t)) (tx double) (ty double)) "cairo_matrix_translate")
-(define-cairo-func void cairo-matrix-scale ((matrix (* cairo-matrix-t)) (sx double) (sy double)) "cairo_matrix_scale")
-(define-cairo-func void cairo-matrix-rotate ((matrix (* cairo-matrix-t)) (radians double)) "cairo_matrix_rotate")
-(define-cairo-func cairo-status-t cairo-matrix-invert ((matrix (* cairo-matrix-t))) "cairo_matrix_invert")
-(define-cairo-func void cairo-matrix-multiply ((result (* cairo-matrix-t)) (a (* cairo-matrix-t)) (b (* cairo-matrix-t))) "cairo_matrix_multiply")
-(define-cairo-func void cairo-matrix-transform-distance ((matrix (* cairo-matrix-t)) (dx (* double)) (dy (* double))) "cairo_matrix_transform_distance")
-(define-cairo-func void cairo-matrix-transform-point ((matrix (* cairo-matrix-t)) (x (* double)) (y (* double))) "cairo_matrix_transform_point")
-(define-cairo-func (* cairo-region-t) cairo-region-create () "cairo_region_create")
-(define-cairo-func (* cairo-region-t) cairo-region-create-rectangle ((rectangle (* cairo-rectangle-int-t))) "cairo_region_create_rectangle")
-(define-cairo-func (* cairo-region-t) cairo-region-create-rectangles ((rects (* cairo-rectangle-int-t)) (count int)) "cairo_region_create_rectangles")
-(define-cairo-func (* cairo-region-t) cairo-region-copy ((original (* cairo-region-t))) "cairo_region_copy")
-(define-cairo-func (* cairo-region-t) cairo-region-reference ((region (* cairo-region-t))) "cairo_region_reference")
-(define-cairo-func void cairo-region-destroy ((region (* cairo-region-t))) "cairo_region_destroy")
-(define-cairo-func cairo-bool-t cairo-region-equal ((a (* cairo-region-t)) (b (* cairo-region-t))) "cairo_region_equal")
-(define-cairo-func cairo-status-t cairo-region-status ((region (* cairo-region-t))) "cairo_region_status")
-(define-cairo-func void cairo-region-get-extents ((region (* cairo-region-t)) (extents (* cairo-rectangle-int-t))) "cairo_region_get_extents")
-(define-cairo-func int cairo-region-num-rectangles ((region (* cairo-region-t))) "cairo_region_num_rectangles")
-(define-cairo-func void cairo-region-get-rectangle ((region (* cairo-region-t)) (nth int) (rectangle (* cairo-rectangle-int-t))) "cairo_region_get_rectangle")
-(define-cairo-func cairo-bool-t cairo-region-is-empty ((region (* cairo-region-t))) "cairo_region_is_empty")
-(define-cairo-func cairo-region-overlap-t cairo-region-contains-rectangle ((region (* cairo-region-t)) (rectangle (* cairo-rectangle-int-t))) "cairo_region_contains_rectangle")
-(define-cairo-func cairo-bool-t cairo-region-contains-point ((region (* cairo-region-t)) (x int) (y int)) "cairo_region_contains_point")
-(define-cairo-func void cairo-region-translate ((region (* cairo-region-t)) (dx int) (dy int)) "cairo_region_translate")
-(define-cairo-func cairo-status-t cairo-region-subtract ((dst (* cairo-region-t)) (other (* cairo-region-t))) "cairo_region_subtract")
-(define-cairo-func cairo-status-t cairo-region-subtract-rectangle ((dst (* cairo-region-t)) (rectangle (* cairo-rectangle-int-t))) "cairo_region_subtract_rectangle")
-(define-cairo-func cairo-status-t cairo-region-intersect ((dst (* cairo-region-t)) (other (* cairo-region-t))) "cairo_region_intersect")
-(define-cairo-func cairo-status-t cairo-region-intersect-rectangle ((dst (* cairo-region-t)) (rectangle (* cairo-rectangle-int-t))) "cairo_region_intersect_rectangle")
-(define-cairo-func cairo-status-t cairo-region-union ((dst (* cairo-region-t)) (other (* cairo-region-t))) "cairo_region_union")
-(define-cairo-func cairo-status-t cairo-region-union-rectangle ((dst (* cairo-region-t)) (rectangle (* cairo-rectangle-int-t))) "cairo_region_union_rectangle")
-(define-cairo-func cairo-status-t cairo-region-xor ((dst (* cairo-region-t)) (other (* cairo-region-t))) "cairo_region_xor")
-(define-cairo-func cairo-status-t cairo-region-xor-rectangle ((dst (* cairo-region-t)) (rectangle (* cairo-rectangle-int-t))) "cairo_region_xor_rectangle")
-(define-cairo-func void cairo-debug-reset-static-data () "cairo_debug_reset_static_data")
diff --git a/lib/thunderchez/cairo/cairo-pdf-functions.ss b/lib/thunderchez/cairo/cairo-pdf-functions.ss
deleted file mode 100644
index 403690e..0000000
--- a/lib/thunderchez/cairo/cairo-pdf-functions.ss
+++ /dev/null
@@ -1,6 +0,0 @@
-(define-cairo-func (* cairo-surface-t) cairo-pdf-surface-create ((filename string) (width_in_points double) (height_in_points double)) "cairo_pdf_surface_create")
-(define-cairo-func (* cairo-surface-t) cairo-pdf-surface-create-for-stream ((write_func (* cairo-write-func-t)) (closure ptr) (width_in_points double) (height_in_points double)) "cairo_pdf_surface_create_for_stream")
-(define-cairo-func void cairo-pdf-surface-restrict-to-version ((surface (* cairo-surface-t)) (version cairo-pdf-version-t)) "cairo_pdf_surface_restrict_to_version")
-(define-cairo-func void cairo-pdf-get-versions ((versions (* cairo-pdf-version-t*)) (num_versions (* int))) "cairo_pdf_get_versions")
-(define-cairo-func string cairo-pdf-version-to-string ((version cairo-pdf-version-t)) "cairo_pdf_version_to_string")
-(define-cairo-func void cairo-pdf-surface-set-size ((surface (* cairo-surface-t)) (width_in_points double) (height_in_points double)) "cairo_pdf_surface_set_size")
diff --git a/lib/thunderchez/cairo/ffi-utils.ss b/lib/thunderchez/cairo/ffi-utils.ss
deleted file mode 100644
index 38a22a3..0000000
--- a/lib/thunderchez/cairo/ffi-utils.ss
+++ /dev/null
@@ -1,162 +0,0 @@
-;;
-;; Copyright 2016 Aldo Nicolas Bruno
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; You may obtain a copy of the License at
-;;
-;;     http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-
- (define-syntax define-cairo-func
-   (lambda (x)
-     (define (string-replace s x y)
-       (list->string  
-	(let ([cmp (if (list? x) memq eq?)])
-	  (map (lambda (z) (if (cmp z x) y z)) (string->list s)))))
-     
-     (define (rename-scheme->c type)
-       (cond 
-	[(case (syntax->datum type)
-	   (const-char* 'string)
-	   (else #f)) 
-	 =>
-	 (lambda (x) (datum->syntax type x))]
-	[else type]))
-
-     (define convert-scheme->c 
-       (lambda (function-name name type)
-	 (import (only (std srfi srfi-13) 
-		       string-delete string-suffix? string-prefix?))
-	 (define (remove-* x)
-	   x)
-	 (let ([t* (syntax->datum type)])
-	   (cond [(equal? t* '(* double))
-		  #`(if (vector? #,name)
-			(double-array-create-from-vector #,name)
-			#,name )]
-		 [(eq? t* 'double) #`(real->flonum #,name)]
-		 [else name]))))
-
-     (define (datum->string x)
-       (symbol->string (syntax->datum x)))
-
-     (define (string->datum t x)
-       (datum->syntax t (string->symbol x)))
-
-     (syntax-case x ()
-       [(_ ret-type name ((arg-name arg-type) ...) c-name) 
-	(with-syntax
-	 ([(renamed-type ...) (map rename-scheme->c #'(arg-type ...))]
-	  [renamed-ret (rename-scheme->c #'ret-type)]
-	  [function-ftype (datum->syntax #'name (string->symbol (string-append (symbol->string (syntax->datum #'name)) "-ft")))]
-	  [((arg-name arg-convert) ...)
-	   (map (lambda (n t) 
-		  (list n (convert-scheme->c #'name n t))) 
-		#'(arg-name ...) #'(arg-type ...))])
-	 (begin
-					; (indirect-export cairo-guard-pointer)
-	   #`(begin
-	       (define (name arg-name ...) 
-		 (define-ftype function-ftype (function (renamed-type ...) renamed-ret))
-		 (let* ([function-fptr  (make-ftype-pointer function-ftype c-name)]
-			[function       (ftype-ref function-ftype () function-fptr)]
-			[arg-name arg-convert] ...)
-		   ;(printf "calling ffi ~d ~n" c-name)
-		   (let ([result (function arg-name ...)])
-		     
-		     #,(case (syntax->datum #'ret-type)
-			 [(cairo-status-t)  #'(cairo-status-enum-ref result)]
-			 [((* cairo-t)
-			   (* cairo-surface-t)
-			   (* cairo-pattern-t)
-			   (* cairo-region-t)
-			   (* cairo-rectangle-list-t)
-			   (* cairo-font-options-t)
-			   (* cairo-font-face-t)
-			   (* cairo-scaled-font-t)
-			   (* cairo-path-t)
-			   (* cairo-device-t)) 
-			  #'(cairo-guard-pointer result)]
-			 [else #'result])))))))])))
-
- (define-syntax define-ftype-allocator 
-   (lambda (x)
-     (syntax-case x () 
-       [(_ name type) 
-	(begin 
-	 ; (indirect-export cairo-guard-pointer)
-	  #`(begin
-	      (define (name) 
-		(cairo-guard-pointer (make-ftype-pointer type (foreign-alloc (ftype-sizeof type)))))
-	      ))])))
-
- (define-syntax define-ftype-array-allocator 
-   (lambda (x)
-     (syntax-case x () 
-       [(_ name type element-type) 
-	(begin
-	 ; (indirect-export cairo-guard-pointer)
-	#'(define (name size) 
-	    (cairo-guard-pointer (make-ftype-pointer type (foreign-alloc (* (ftype-sizeof element-type) size))))))])))
-
-;;; EXPERIMENTAL CONVENIENT SYNTAX:
-
- (define-syntax with-cairo
-   (lambda (x)
-     (define valid-functions 
-       '(get-user-data set-user-data save restore
-			     push-group push-group-with-content pop-group
-			     pop-group-to-source set-operator set-source
-			     set-source-rgb set-source-rgba set-source-surface
-			     set-tolerance set-antialias set-fill-rule
-			     set-line-width set-line-cap set-line-join
-			     set-dash set-miter-limit translate scale
-			     rotate transform set-matrix identity-matrix
-			     user-to-device user-to-device-distance
-			     device-to-user device-to-user-distance new-path
-			     move-to new-sub-path line-to curve-to
-			     arc arc-negative rel-move-to
-			     rel-line-to rel-curve-to rectangle
-			     close-path path-extents paint
-			     paint-with-alpha mask mask-surface stroke
-			     stroke-preserve fill fill-preserve copy-page
-			     show-page in-stroke in-fill in-clip
-			     stroke-extents fill-extents reset-clip clip
-			     clip-preserve clip-extents copy-clip-rectangle-list
-			     get-operator get-source get-tolerance
-			     get-antialias has-current-point get-current-point
-			     get-fill-rule get-line-width get-line-cap
-			     get-line-join get-miter-limit get-dash-count
-			     get-dash get-matrix get-target
-			     get-group-target copy-path copy-path-flat
-			     append-path status select-font-face
-			     set-font-size set-font-matrix get-font-matrix
-			     set-font-options get-font-options set-font-face
-			     get-font-face set-scaled-font get-scaled-font
-			     show-text show-glyphs show-text-glyphs
-			     text-path glyph-path text-extents
-			     glyph-extents font-extents
-			     set-source-color))
-     (define (rename-cairo name)
-       (string->symbol (string-append "cairo-" (symbol->string name))))
-     (syntax-case x ()
-       [(_ context application ...)
-	(with-syntax ([(forms ...) 
-		       (map (lambda (y) 
-			      (let ([y* (syntax->datum y)])
-				(if (pair? y*)
-				    (let* ([f* (car y*)])
-				      (if (memq f* valid-functions)
-					  (syntax-case y ()
-					    [(f param ...) #`(#,(datum->syntax #'f (rename-cairo (syntax->datum #'f))) 
-							      context param ...)])
-					  y))
-				    y)))
-			    #'(application ...))])
-		     #'(begin forms ...))])))
diff --git a/lib/thunderchez/cairo/test.ss b/lib/thunderchez/cairo/test.ss
deleted file mode 100644
index 2a4505f..0000000
--- a/lib/thunderchez/cairo/test.ss
+++ /dev/null
@@ -1,547 +0,0 @@
-
-(import (cairo))
-
-(cairo-library-init)
-(define pi 3.1415926536)
-
-(define (test-cairo name proc) 
-  (let* ([surface (cairo-image-surface-create (cairo-format 'argb-32) 120 120)]
-	 [cr (cairo-create surface)])
-    (cairo-scale cr 120. 120.)
-    (proc surface cr)
-    (cairo-surface-write-to-png surface (string-append name ".png"))))
-
-(define (sample-cairo name proc) 
-  (let* ([surface (cairo-image-surface-create (cairo-format 'argb-32) 256 256)]
-	 [cr (cairo-create surface)])
-    (proc surface cr)
-    (cairo-surface-write-to-png surface (string-append name ".png"))))
-
-;; FROM https://www.cairographics.org/tutorial/
-
-(test-cairo "stroke"
-	    (lambda (surface cr)
-	      (cairo-set-line-width cr 0.1)
-	      (cairo-set-source-rgb cr 0. 0. 0.)
-	      (cairo-rectangle cr 0.25 0.25 0.25 0.25)
-	      (cairo-stroke cr)))
-
-(test-cairo "showtext"
-	    (lambda (surface cr)
-	      (cairo-set-source-rgb cr 0. 0. 0.)
-	      (cairo-select-font-face cr "Georgia" (cairo-font-slant 'normal) (cairo-font-weight 'bold))
-	      (cairo-set-font-size cr 1.2)
-	      (let ([extents (cairo-text-extents-create)])
-		(cairo-text-extents cr "a" extents)
-		(let-struct extents cairo-text-extents-t (width height x-bearing y-bearing)
-			    (cairo-move-to cr 
-					   (- 0.5 (/ width 2) x-bearing)
-					   (- 0.5 (/ height 2) y-bearing)))
-		(cairo-show-text cr "a"))))
-
-(test-cairo "paint"
-	    (lambda (surface cr)
-	      (cairo-set-source-rgb cr 0.0 0.0 0.0)
-	      (cairo-paint-with-alpha cr 0.5)))
-
-(test-cairo "mask"
-	    (lambda (surface cr)
-	      (let* ([linpat (cairo-pattern-create-linear 0. 0. 1. 1.)]
-		     [radpat (cairo-pattern-create-radial 0.5 0.5 0.25 0.5 0.5 0.75)])
-		(cairo-pattern-add-color-stop-rgb linpat 0. 0. 0.3 0.8)
-		(cairo-pattern-add-color-stop-rgb linpat 1. 0. 0.8 0.3)
-		(cairo-pattern-add-color-stop-rgba radpat 0. 0. 0. 0. 1.)
-		(cairo-pattern-add-color-stop-rgba radpat 0.5 0. 0. 0. 0.)
-		(cairo-set-source cr linpat)
-		(cairo-mask cr radpat))))
-
-(test-cairo "setsourcergba"
-	    (lambda (surface cr)
-	     (cairo-set-source-rgb cr 0. 0. 0.) 
-	     (cairo-move-to cr 0. 0.)
-	     (cairo-line-to cr 1. 1.)
-	     (cairo-move-to cr 1. 0.)
-	     (cairo-line-to cr 0. 1.)
-	     (cairo-set-line-width cr 0.2)
-	     (cairo-stroke cr)
-	      
-	     (cairo-rectangle cr 0. 0. 0.5 0.5)
-	     (cairo-set-source-rgba cr 1. 0. 0. 0.80)
-	     (cairo-fill cr)
-	      
-	     (cairo-rectangle cr 0. 0.5 0.5 0.5)
-	     (cairo-set-source-rgba cr 0. 1. 0. 0.60)
-	     (cairo-fill cr)
-	      
-	     (cairo-rectangle cr 0.5 0. 0.5 0.5)
-	     (cairo-set-source-rgba cr 0. 0. 1. 0.40)
-	     (cairo-fill cr)))
-
-(test-cairo "setsourcegradient"
-	    (lambda (surface cr)
-	      (let ([radpat (cairo-pattern-create-radial 0.25 0.25 0.1  0.5 0.5 0.5)]
-		    [linpat (cairo-pattern-create-linear 0.25 0.35 0.75 0.65)])
-		(cairo-pattern-add-color-stop-rgb radpat 0.  1.0 0.8 0.8)
-		(cairo-pattern-add-color-stop-rgb radpat 1.  0.9 0.0 0.0)
-		(for-each (lambda (i) 
-			    (for-each (lambda (j) 
-					(cairo-rectangle cr (- (/ (1+ i) 10.) 0.04) (- (/ (1+ j) 10.) 0.04) 0.08 0.08))
-				      (iota 9)))
-			    (iota 9))
-		(cairo-set-source cr radpat)
-		(cairo-fill cr)
-		(cairo-pattern-add-color-stop-rgba linpat 0.00  1. 1. 1. 0.)
-		(cairo-pattern-add-color-stop-rgba linpat 0.25  0. 1. 0. 0.5)
-		(cairo-pattern-add-color-stop-rgba linpat 0.50  1. 1. 1. 0.)
-		(cairo-pattern-add-color-stop-rgba linpat 0.75  0. 0. 1. 0.5)
-		(cairo-pattern-add-color-stop-rgba linpat 1.00  1. 1. 1. 0.)
-
-		(cairo-rectangle cr 0.0 0.0 1. 1.)
-		(cairo-set-source cr linpat)
-		(cairo-fill cr))))
-
-(test-cairo "tips-ellipse" 
-	    (lambda (surface cr)
-	      (cairo-set-line-width cr 0.1)
-	      
-	      (cairo-save cr)
-	      (cairo-scale cr 0.5 1.)
-	      (cairo-arc cr 0.5 0.5 0.40 0. (* 2. pi))
-	      (cairo-stroke cr)
-	      
-	      (cairo-translate cr 1. 0.)
-	      (cairo-arc cr 0.5 0.5 0.40 0. (* 2. pi))
-	      (cairo-restore cr)
-	      (cairo-stroke cr)))
-
-
-
-;; FROM https://www.cairographics.org/samples/