Чтобы избежать возни и разбирательств с autoconf/automake можно забрать из GNOME CVS модуль 'present'.
Преобразовать 64-битное значение в IEEE-754 можно так printf("%g", GSF_LE_GET_DOUBLE(pntr_to_data)).
ctx.set_line_width(4) ctx.translate(100,100) ctx.set_source_rgb(1,0,0) ctx.line_to(150,150) ctx.stroke() ctx.save() ctx.move_to(0,0) ctx.line_to(50,0) ctx.set_source_rgb(0,1,0) ctx.stroke() ctx.move_to(0,0) ctx.line_to(0,50) ctx.set_source_rgb(0,0,1) ctx.restore() ctx.stroke() |
# толщина линии 4 # 0,0 ("начало координат") теперь находится в точке 100,100 # красный цвет # создали линию 1 от точки 100,100 до точки 250,250 # линия 1 нарисована красным цветом, толщиной 4 # сохранили толщину/цвет/трансформацию контекста # переместились в точку 100,100 # создали линию 2 от точки 100,100 до точки 150,100 # зелёный цвет # линия 2 нарисована зелёным цветом, толщиной 4 # переместились в точку 100,100 # создали линию 3 от точки 100,100 до точки 100,150 # синий цвет # восстановили то, что было до save() # линия 3 нарисована КРАСНЫМ(!) цветом |
"Словарик"
Принимаем c = math.cos(a), s = math.sin(a), t = math.tan(a)ctx.translate(dx,dy) | mtrx =cairo.Matrix(1,0,0,1,dx,dy) |
ctx.scale(x,y) | mtrx = cairo.Matrix(x,0,0,y,0,0) |
ctx.rotate(a) | ctx.transform(c,s,-s,c,0,0) |
поворот на угол 'a' с центром x,y | mtrx =cairo.Matrix(c,s,-s,c,x-c*x+s*y,y-s*x-c*y) |
xskew(a) | mtrx =cairo.Matrix(1,0,t,1,0,0) |
yskew(a) | mtrx =cairo.Matrix(1,t,0,1,0,0) |
Рецепты