Subscribed unsubscribe Subscribe Subscribe

pycairoのドキュメントがなさすぎる件について

Cのドキュメントを参照してくれ、とpycairoのホームページにはあるけど、それってつまりソースを見ろってことですよね?

cairo_matrix_t のラッパの中途半端さ加減がすごい。もともと構造体としては \begin{pmatrix}x_x&x_y\\y_x&y_y\end{pmatrix}\cdot\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}x_0\\y_0\end{pmatrix} を表現しているわけなのだが、これらの6個の要素 (xx, xy, yx, yy, x0, y0) にはどういうわけかsequenceとしてしかアクセスできず、読み取り専用になっている。どういう意図があるのだろう。

とりあえず作ってみたサンプルを張ってみる。

import gtk
import cairo

drawing_area = gtk.DrawingArea()
def draw(area, event):
    cc = area.window.cairo_create()
    grad = cairo.LinearGradient(0, 20, 0, 80)
    grad.add_color_stop_rgb(0, 1.0, 0.9, 0.5)
    grad.add_color_stop_rgb(0.5, 1.0, 0.8, 0.25)
    grad.add_color_stop_rgb(0.51, 1.0, 0.75, 0)
    grad.add_color_stop_rgb(1.0, 0.6, 0.4, 0)
    cc.set_source(grad)
    cc.select_font_face("Impact", cairo.FONT_SLANT_NORMAL,
                        cairo.FONT_WEIGHT_BOLD)
    cc.set_font_size(80)
    mat = cc.get_font_matrix()
    cc.set_font_matrix(cairo.Matrix(mat[0], mat[1], mat[2], mat[3],
                                    mat[4], 80))
    cc.show_text("HEY BOY HEY GIRL")
drawing_area.connect("expose-event", draw)

wnd = gtk.Window(gtk.WINDOW_TOPLEVEL)
wnd.connect("delete-event", lambda widget, event: False)
wnd.connect("destroy", lambda widget: gtk.main_quit())
wnd.add(drawing_area)
drawing_area.show()
wnd.show()

gtk.main()

出力結果:
f:id:moriyoshi:20070528165522p:image