Generate a spiral using Cairo in Python
#!/usr/bin/env python # [SNIPPET_NAME: Spiral] # [SNIPPET_CATEGORIES: Cairo] # [SNIPPET_DESCRIPTION: Generate a spiral] # [SNIPPET_DOCS: http://www.tortall.net/mu/wiki/CairoTutorial] # [SNIPPET_LICENSE: MPL] import cairo import os WIDTH, HEIGHT = 600, 600 def draw_spiral (ctx, width, height): wd = .02 * width hd = .02 * height width -= 2 height -= 2 ctx.move_to (width + 1, 1-hd) for i in range(9): ctx.rel_line_to (0, height - hd * (2 * i - 1)) ctx.rel_line_to (- (width - wd * (2 *i)), 0) ctx.rel_line_to (0, - (height - hd * (2*i))) ctx.rel_line_to (width - wd * (2 * i + 1), 0) ctx.set_source_rgb (0, 0, 1) ctx.stroke() surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT) ctx = cairo.Context(surface) ctx.set_source_rgb (1, 1, 1) ctx.set_operator (cairo.OPERATOR_SOURCE) ctx.paint() draw_spiral (ctx, WIDTH, HEIGHT) # the output is written to your home directory surface.write_to_png(os.path.expanduser("~") + '/spiral.png')