snippet_normalize(cr, width, height) def path_ellipse(cr, x, y, width, height, angle=0): """ x - center x y - center y width - width of ellipse (in x direction when angle=0) height - height of ellipse (in y direction when angle=0) angle - angle in radians to rotate, clockwise """ cr.save() cr.translate(x, y) cr.rotate(angle) cr.scale(width / 2.0, height / 2.0) cr.arc(0.0, 0.0, 1.0, 0.0, 2.0 * M_PI) cr.restore() path_ellipse(cr, 0.5, 0.5, 1.0, 0.3, M_PI/4.0) # fill cr.set_source_rgba(1,0,0,1) cr.fill_preserve() # stroke # reset identity matrix so line_width is a constant # width in device-space, not user-space cr.save() cr.identity_matrix() cr.set_source_rgba(0,0,0,1) cr.set_line_width(3) cr.stroke() cr.restore()