c-wrapperでcairoを弄ってみた

(use c-wrapper)
;; (use gauche.process)
;; (c-ld  (process-output->string "pkg-config --libs --cflags cairo"))
;; (c-include (glob "/usr/include/cairo/cairo*.h") :include-dirs "/usr/include/cairo")

(c-load (glob "/usr/include/cairo/cairo*.h")
        :cppflags-cmd  "pkg-config cairo --cflags-only-I"
        :cflags-cmd    "pkg-config cairo --cflags-only-other"
        :libs-cmd      "pkg-config cairo --libs"
        :compiled-lib  "cairolib"
        )

(define (main args)
  (let ((surface (ptr (make <cairo_surface_t>)))
        (cr (ptr (make <cairo_t>))))
    (define (prepare)
      (set! surface (cairo_svg_surface_create "my.svg" 400 60))
      (set! cr (cairo_create surface)))

    (define (create)
      (cairo_set_source_rgb cr 0 0 0)
      (cairo_select_font_face cr "Sans" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_NORMAL)
      (cairo_set_font_size cr 40.0)
      (cairo_move_to cr 10.0 50.0)
      (cairo_show_text cr "My Test Message"))
    
    (define (cleanup)
      (cairo_surface_destroy surface)
      (cairo_destroy cr))
    (prepare)
    (create)
    (cleanup))
    )

もっと昔にcairoをc-wrapperで使っていた人がいた。あとで見てみよう。
http://homepage.mac.com/skimu/Gauche/cairo/snippets.html