From 4c5c46deed2b9d7aae8fc364ac5ad07728bc4644 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 2 Apr 2011 17:52:03 -0600 Subject: [PATCH] avoid Cairo and Pango functions missing in CentOS 5.5 libs --- collects/racket/draw/unsafe/cairo.rkt | 26 ++++++++++++++++++++------ collects/racket/draw/unsafe/pango.rkt | 14 ++++++++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/collects/racket/draw/unsafe/cairo.rkt b/collects/racket/draw/unsafe/cairo.rkt index 4fbfb6d481..dfa1d93e5d 100644 --- a/collects/racket/draw/unsafe/cairo.rkt +++ b/collects/racket/draw/unsafe/cairo.rkt @@ -212,22 +212,36 @@ ;; Gradients (define-cairo cairo_pattern_add_color_stop_rgb (_fun _cairo_pattern_t _double* _double* _double* _double* -> _void)) (define-cairo cairo_pattern_add_color_stop_rgba (_fun _cairo_pattern_t _double* _double* _double* _double* _double* -> _void)) -(define-cairo cairo_pattern_get_color_stop_count (_fun _cairo_pattern_t (_ptr o _int) -> _int)) -(define-cairo cairo_pattern_get_color_stop_rgba (_fun _cairo_pattern_t _int (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int)) +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_color_stop_count (_fun _cairo_pattern_t (_ptr o _int) -> _int) + #:make-fail make-not-available) +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_color_stop_rgba (_fun _cairo_pattern_t _int (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int) + #:make-fail make-not-available) +#; ; 1.4 and later: (define-cairo cairo_pattern_create_rgb (_fun _double* _double* _double* -> _cairo_pattern_t) #:wrap (allocator cairo_pattern_destroy)) +#; ; 1.4 and later: (define-cairo cairo_pattern_create_rgba (_fun _double* _double* _double* _double* -> _cairo_pattern_t) #:wrap (allocator cairo_pattern_destroy)) -(define-cairo cairo_pattern_get_rgba (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int)) ;; not an allocator -(define-cairo cairo_pattern_get_surface (_fun _cairo_pattern_t (_ptr o _cairo_surface_t) -> _int)) ;; not an allocator +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_rgba (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int) + #:make-fail make-not-available) ;; not an allocator +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_surface (_fun _cairo_pattern_t (_ptr o _cairo_surface_t) -> _int) + #:make-fail make-not-available) ;; not an allocator (define-cairo cairo_pattern_create_linear (_fun _double* _double* _double* _double* -> _cairo_pattern_t) #:wrap (allocator cairo_pattern_destroy)) -(define-cairo cairo_pattern_get_linear_points (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int)) +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_linear_points (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int) + #:make-fail make-not-available) (define-cairo cairo_pattern_create_radial (_fun _double* _double* _double* _double* _double* _double* -> _cairo_pattern_t) #:wrap (allocator cairo_pattern_destroy)) -(define-cairo cairo_pattern_get_radial_circles (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int)) +#; ; 1.4 and later: +(define-cairo cairo_pattern_get_radial_circles (_fun _cairo_pattern_t (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) (_ptr o _double*) -> _int) + #:make-fail make-not-available) (define-cairo cairo_pattern_status (_fun _cairo_pattern_t -> _int)) (define-cairo cairo_pattern_get_extend (_fun _cairo_pattern_t -> _int)) diff --git a/collects/racket/draw/unsafe/pango.rkt b/collects/racket/draw/unsafe/pango.rkt index 471e809e37..1b4862cb75 100644 --- a/collects/racket/draw/unsafe/pango.rkt +++ b/collects/racket/draw/unsafe/pango.rkt @@ -156,7 +156,9 @@ #:wrap (allocator pango_layout_iter_free)) (define-pango pango_layout_iter_get_baseline (_fun PangoLayoutIter -> _int)) (define-pango pango_layout_iter_next_run (_fun PangoLayoutIter -> _bool)) -(define-pango pango_layout_iter_get_run_readonly (_fun PangoLayoutIter -> (_or-null _PangoGlyphItem-pointer))) +(define-pango pango_layout_iter_get_run (_fun PangoLayoutIter -> (_or-null _PangoGlyphItem-pointer))) +(define-pango pango_layout_iter_get_run_readonly (_fun PangoLayoutIter -> (_or-null _PangoGlyphItem-pointer)) + #:fail (lambda () pango_layout_iter_get_run)) (define-pango pango_layout_get_line (_fun PangoLayout _int -> PangoLayoutLine)) (define-pango pango_layout_get_line_readonly (_fun PangoLayout _int -> PangoLayoutLine) @@ -186,7 +188,9 @@ (define-pango pango_font_family_get_name (_fun PangoFontFamily -> _string)) ;; not an allocator (define-pango pango_font_family_is_monospace (_fun PangoFontFamily -> _bool)) -(define-pango pango_language_get_default (_fun -> PangoLanguage)) +(define-pango pango_language_get_default (_fun -> PangoLanguage) + ;; not available before 1.16 + #:fail (lambda () (lambda () #f))) (define-pango pango_font_map_load_font (_fun PangoFontMap PangoContext PangoFontDescription -> (_or-null PangoFont))) (define-pango pango_coverage_unref (_fun PangoCoverage -> _void) #:wrap (deallocator)) @@ -196,13 +200,15 @@ (define-pango pango_font_metrics_unref (_fun PangoFontMetrics -> _void) #:wrap (deallocator)) -(define-pango pango_font_get_metrics (_fun PangoFont PangoLanguage -> PangoFontMetrics) +(define-pango pango_font_get_metrics (_fun PangoFont (_or-null PangoLanguage) -> PangoFontMetrics) #:wrap (allocator pango_font_metrics_unref)) (define-pango pango_font_metrics_get_approximate_char_width (_fun PangoFontMetrics -> _int)) (define-pango pango_font_metrics_get_ascent (_fun PangoFontMetrics -> _int)) (define-pango pango_font_metrics_get_descent (_fun PangoFontMetrics -> _int)) -(define-pango pango_layout_get_unknown_glyphs_count (_fun PangoLayout -> _int)) +(define-pango pango_layout_get_unknown_glyphs_count (_fun PangoLayout -> _int) + ;; not available in old versions: + #:fail (lambda () (lambda (lo) 0))) (define-pango pango_attr_list_unref (_fun PangoAttrList -> _void) #:wrap (deallocator))