Remove vendored lib/thunderchez
ober
44d82917315d637f2e1a6937f63848479ee957f2
deleted file mode 100644 --- 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/ deleted file mode 100644 --- 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 deleted file mode 100644 --- 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") deleted file mode 100644 --- 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") deleted file mode 100644 --- 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 ...))]))) deleted file mode 100644 --- 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/