draw2d/resource/postscript/snowflak.ps

92 lines
2.1 KiB
PostScript

%!
%% Elizabeth D. Zwicky
%% zwicky@erg.sri.com
%% multiflake
/newflake
{/seed usertime def
seed srand
/strokecolor [rand 99 mod 100 div
rand 99 mod 100 div
100 rand 22 mod sub 100 div] def
/fillcolor [rand 99 mod 100 div
100 rand 22 mod sub 100 div
rand 99 mod 100 div] def
/eofillcolor [rand 99 mod 100 div
rand 22 mod 100 div
100 rand 22 mod sub 100 div] def
/colorfill {fillcolor aload pop setrgbcolor fill } def
/colorstroke {strokecolor aload pop setrgbcolor stroke } def
/eocolorfill {eofillcolor aload pop setrgbcolor eofill } def
/arm {0 0 moveto
5 {3 {x y x y x y curveto} repeat} repeat
seed srand
0 0 moveto
5 {3 {x neg y x neg y x neg y curveto} repeat} repeat
seed srand
} def
newpath
0 0 moveto boxsize 0 rlineto 0 boxsize rlineto boxsize neg 0 rlineto
0 0 lineto
rand 99 mod 100 div
100 rand 22 mod sub 100 div
100 rand 22 mod sub 100 div
sethsbcolor fill
seed srand
boxsize 2 div boxsize 2 div translate
%% If the device you are using can handle complex fills, replace the
%% next three lines with:
%%
6 {arm 60 rotate} repeat
gsave colorfill grestore gsave eocolorfill grestore colorstroke
%%
%% This will be not only faster, but prettier. On a LaserWriter or a
%% Tektronix Phaser II PS it gives a limitcheck.
%% 6 {arm 60 rotate colorfill} repeat
%% 6 {arm 60 rotate eocolorfill} repeat
%% 6 {arm 60 rotate} repeat colorstroke
} def
1 setlinewidth
clippath [pathbbox]== pathbbox /ury exch def /urx exch def /lly exch def /llx exch def
/minsize 250 def
/pagewidth urx llx sub def
/pageheight ury lly sub def
/inwidth pagewidth minsize div def
/inheight pageheight minsize div def
/boxsize
inwidth inheight gt
{pagewidth inwidth truncate div}
{pageheight inheight truncate div}
ifelse
def
/inwidth pagewidth boxsize div cvi def
/inheight pageheight boxsize div cvi def
/x {rand 70 mod abs} def
/y {rand 120 mod abs} def
llx lly translate
inheight dup == {
inwidth {
gsave
(NEWFLAKE)==
newflake
grestore
boxsize 0 translate
} repeat
boxsize inwidth mul neg boxsize translate
} repeat
showpage