mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2025-12-20 17:30:07 +01:00
49 lines
930 B
C#
49 lines
930 B
C#
|
|
%!CairoScript
|
||
|
|
/pot { % n -- n
|
||
|
|
1 sub
|
||
|
|
dup -1 bitshift or
|
||
|
|
dup -2 bitshift or
|
||
|
|
dup -4 bitshift or
|
||
|
|
dup -8 bitshift or
|
||
|
|
dup -16 bitshift or
|
||
|
|
1 add
|
||
|
|
} bind def
|
||
|
|
|
||
|
|
/direction { % i -- bool
|
||
|
|
dup 2 lt { pop true } {
|
||
|
|
dup 1 add dup pot dup 3 -1 roll eq { pop pop true } {
|
||
|
|
2 div 1 sub 2 mul exch sub direction not
|
||
|
|
} ifelse
|
||
|
|
} ifelse
|
||
|
|
} bind def
|
||
|
|
|
||
|
|
/path { % cr dx dy -- cr
|
||
|
|
0 1 2048 {
|
||
|
|
4 1 roll 3 copy L pop 4 -1 roll direction {
|
||
|
|
exch neg
|
||
|
|
} {
|
||
|
|
neg exch
|
||
|
|
} ifelse
|
||
|
|
} for
|
||
|
|
pop pop
|
||
|
|
} bind def
|
||
|
|
|
||
|
|
dict
|
||
|
|
/width 512 set
|
||
|
|
/height 512 set
|
||
|
|
surface context
|
||
|
|
|
||
|
|
1 g set-source paint
|
||
|
|
|
||
|
|
//LINE_CAP_ROUND set-line-cap
|
||
|
|
//LINE_JOIN_ROUND set-line-join
|
||
|
|
4 set-line-width
|
||
|
|
|
||
|
|
256 256 m 12 0 path 0 0 0 rgb set-source stroke
|
||
|
|
256 256 m -12 0 path 1 0 0 rgb set-source stroke
|
||
|
|
256 256 m 0 12 path 0 1 0 rgb set-source stroke
|
||
|
|
256 256 m 0 -12 path 0 0 1 rgb set-source stroke
|
||
|
|
|
||
|
|
/target get (out.png) write-to-png pop
|
||
|
|
pop
|