summaryrefslogtreecommitdiff
path: root/examples/spiral.py
blob: b0f395205d3fc85af878ad9a8604623ab9b1ad1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python
"""cairo/cairo-demo/png/spiral.c translated into Python
"""

import cairo

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)

surface.write_to_png('spiral.png')