summaryrefslogtreecommitdiff
path: root/util/cairo-script/examples/sierpinski.cs
blob: 6f959083b4b194af149fc88823424e2f3ee74aa0 (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
37
%!CairoScript

/1sqrt3 0.577359269 def

/T { % cr size -- cr
  exch % size cr
  0 0 m 1 index 0 l 1 index dup 2 div exch //1sqrt3 mul l h

  exch 2 div
  dup 4 ge {
    exch % size/2 cr

    1 index T
    save 1 index 0 translate 1 index T restore
    save 1 index dup 2 div exch //1sqrt3 mul translate 1 index T restore

    exch
  } if
  pop
} bind def

dict
  /width  512 set
  /height 300 set
  surface context

1 1 1 set-source-rgb paint

.5 set-line-width

0 300 translate
1 -1 scale

512 T 0 0 0 set-source-rgb stroke

/target get (out.png) write-to-png pop
pop