home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Corel / Ventura8 / Custom / userproc.ps < prev    next >
Text File  |  1997-10-09  |  96KB  |  4,057 lines

  1. %%  --------------------------------------------------------------------
  2. %%  ----------- CorelDRAW! USER-DEFINED FUNCTON FILE -------------------
  3. %%  --------------------------------------------------------------------
  4.  
  5. %% NOTES:
  6.  
  7.     There are two types of user defined functions: "Spot" and "Fill"
  8.  
  9.     - A "Spot" function is a function that takes two floating point arguments,
  10.         X and Y, both between -1 and 1,  and returns a single real value between
  11.         -1 and 1 (otherwise an execution error occurs) called Z.
  12.         The domain is a 2 X 2 rectangle that will be mapped (at print time) into
  13.         each cell of the halftoning screen.
  14.         The 3-D representation of the function Z = f(X,Y) (does not need
  15.         to be continuous but f(X,Y) must be defined for all -1 <= X, Y <= 1 )
  16.         is a surface whose higher points will be whitened first in each cell.
  17.         For more information about spot functions, read section 4.8 of the
  18.         POSTSCRIPT LANGUAGE REFERENCE MANUAL (By Adobe Systems Inc.).
  19.  
  20.     - A Fill function takes between 0 and 5 arguments.  It assumes there is a
  21.         path already drawn (may be closed or not, may be disconnected) and
  22.         attempts to fill it.
  23.  
  24.         A simple fill function could be:
  25.  
  26.                 /MyFill1
  27.                 { %0 parms
  28.                  .70 setgray fill
  29.                 } bind def
  30.  
  31.         For more complex fills, the fill function may refer to the current
  32.         object's bounding box that is always defined in MILs (1/1000 of an inch)
  33.         and relative to the bottom left of the current page.
  34.  
  35.         Globals Bbllx, Bblly, Bburx, Bbury can always be used to get the
  36.         object's bbox's lower left and upper right corners.
  37.  
  38.         NOTE 1: For objects with disconnected paths like multi-letter words
  39.         and disconnected lines & curves, the fill function will be called once
  40.         for each closed sub-path.  However, the object's bounding box remains
  41.         the same for each call.
  42.  
  43.         NOTE 2: When called by CorelDRAW!, the fill function will be inside a
  44.         "gsave - grestore" sequence so that the fill function does not need to
  45.         restore the original graphics state.  Also, the fill function should
  46.         make no assumption about the current graphics state other than the
  47.         following:
  48.         
  49.                         - The current rotation angle is 0 (-90 for sideways pages)
  50.                         - The current unit is the MIL (1/1000 inch)
  51.                         - There is a path ready to be filled.
  52.  
  53. SYNTAX FOR THIS FILE:
  54.  
  55.     - A function definition starts with a "%@Spot" or a "%@Fill" comment line
  56.     starting in column one indicating that a spot or a fill function is about
  57.      to be defined.  The remainder of the line is ignored.
  58.     
  59.     - The line immediately following must start with the function name
  60.     immediately preceeded by a '/' (slash) in column one (eg: /MyFirstFill).
  61.     This name will be used to identify the fill in the .CDR file and the
  62.     .EPS files. The remainder of the line indicates the name that appears
  63.     in the custom function selection dialog box of CorelDRAW! and the user
  64.     parameters for that function: Spot functions are not allowed any user
  65.     parameters just a display name. Fill functions are allowed from 0 to 5
  66.     parmeters specified as follows:
  67.  
  68.             %<userfnname>,<# of parms> ,<parmname1>=<default1>,<parmname2>=<default2>,...
  69.  
  70.             where: <userfnname> is the name that is displayed in the PSFILL selection
  71.                           list box, this is the string that is translated for
  72.                           foreign language versions
  73.              <# of parms> is an integer value between 0 and 5
  74.              <parmnameX> is the significance of parm X (string up to 20 chars)
  75.              <defaultX> is the default numeric value for that parm (always integer)
  76.  
  77.             The number of parameter names & defaults must always match the
  78.             <# of parms> value.
  79.             Prior to calling that fill function, the main program will stack the
  80.             parameters in the same order they were specified.
  81.  
  82.         ALL PARMS ARE INTEGERS.
  83.  
  84.         EXAMPLE:        a fill function with 3 parameters
  85.  
  86.         %@Fill
  87.         /MyFunction  %MyFunctionName,3,Background gray=100,Foreground gray=50,Density=4
  88.             {        % when called, STACK= <BackGray> <ForeGray> <Density>
  89.             /Density exch 1 10 InRange def        % validate density
  90.             /ForeGray exch 0 100 InRange def        % validate foreground gray
  91.             /BackGray exch 0 100 InRange def        % validate background gray
  92.             ...
  93.             } bind def
  94.  
  95.             NOTE: the 'InRange' PostScript function.
  96.             The main program cannot validate the range of the parameters.
  97.             The fill function can use the supplied function: 'InRange' which is
  98.             described below:
  99.                 <value> <min> <max> InRange  ==>  <newval>
  100.                 InRange takes 3 arguments from the stack, then makes sure that
  101.                 <value> is between <min> and <max>. If so, it leaves <value>
  102.                 on the stack, otherwise it pushes a valid <newval> on the stack.
  103.  
  104.             Note: The 'wDstChck' PostScript function.
  105.             In the case of a maximum value that equals a minimum value, the
  106.             difference will be null and in most cases will cause a devision by zero.
  107.             The fill function can use the supplied function: 'wDstChck'
  108.                         which is described below:
  109.                 <MaxValue> <MinValue> wDstChck ==> MaxValue or MaxValue+1
  110.                 If the 2 values are equal
  111.                               then add 1 to MaxValue and leave it on the stack
  112.                             else
  113.                               leave MaxValue unchanged on the stack.
  114.  
  115.     - The next n lines contain the function's body enclosed in curly
  116.     brackets and followed by a "bind def" sequence.
  117.     - The content of the body is not parsed by CorelDRAW!.  A function definition is
  118.     terminated when the next '%@..." sequence is read or at the end of the file.
  119.     - Lines should not exceed 150 characters long.
  120.     - Function names should not exceed 20 characters.
  121.     - Parameter names should not exceed 20 characters.
  122.     - There is no limit for the number of lines in each function.
  123.  
  124.  
  125. %@Spot
  126. /Dot2 %Dot2
  127.         { %def --SPOT FUNCTION : DOT2: black around cells
  128.         dup mul exch dup mul add 1 sub
  129.         } bind def
  130.  
  131. %@Spot
  132. /OutCircleBlk %OutCircleBlk
  133.         { %def --SPOT FUNCTION : OUTCIRCLE: empty black circles
  134.         dup mul exch dup mul add
  135.         0.6 exch sub abs -0.5 mul
  136.         } bind def
  137.  
  138. %@Spot
  139. /OutCircleWhi %OutCircleWhi
  140.         { %def --SPOT FUNCTION : OUTCIRCLE: empty black circles
  141.         dup mul exch dup mul add
  142.         0.6 exch sub abs 0.5 mul
  143.         } bind def
  144.  
  145. %@Spot
  146. /Diamond %Diamond
  147.         { %def --SPOT FUNCTION : DIAMOND1
  148.         abs exch abs add 1 exch sub
  149.         } bind def
  150.  
  151. %@Spot
  152. /Diamond2 %Diamond2
  153.         { %def --SPOT FUNCTION : DIAMOND2
  154.                 abs exch abs 2 copy add .75
  155.                 le {dup mul exch dup mul add 1
  156.                 exch sub} {2 copy add 1.25 
  157.                 le {.85 mul add 1 exch sub} 
  158.                 {1 sub dup mul exch 1 sub dup mul
  159.                 add 1 sub} ifelse} ifelse
  160.         } bind def
  161.  
  162. %@Spot
  163. /MicroWaves %MicroWaves
  164.         { %def --SPOT FUNCTION : MICROWAVES
  165.         /wy exch def
  166.         180 mul cos 2 div wy dup dup dup mul mul sub mul wy add
  167.         180 mul cos
  168.         } bind def
  169.  
  170. %@Spot
  171. /Grid %Grid
  172.         { % A SQUARE GRID
  173.         2 copy
  174.         abs exch abs
  175.         gt {exch} if
  176.         pop 2 mul 1 exch sub 3.5 div
  177.         } bind def
  178.  
  179. %@Spot
  180. /Lines %Lines
  181.         { % STRAIGHT LINES
  182.         pop abs 2 mul 1 exch sub
  183.         } bind def
  184.  
  185. %@Spot
  186. /Star %Star
  187.      {
  188.      abs exch abs
  189.      2 copy gt {exch} if
  190.      1  sub
  191.     dup 0 eq {0.01 add}if
  192.      atan 360 div
  193.      } bind def
  194.  
  195. %@Spot
  196. /Euclidean %Euclidean
  197.         { %def --SPOT FUNCTION : EUCLIDEAN composite dot
  198.                 abs exch abs
  199.                 2 copy add 1
  200.                 gt {1 sub dup mul
  201.                 exch 1 sub dup mul 
  202.                 add 1 sub} {dup mul exch
  203.                 dup mul add 1 exch sub}
  204.                 ifelse
  205.         } bind def
  206.  
  207. %@Spot
  208. /Rhomboid %Rhomboid
  209.              { %def --SPOT FUNCTION : RHOMBOID
  210.                 abs exch abs .8
  211.                 mul add 2 div
  212.         } bind def
  213.  
  214. %@Spot
  215. /Elliptical %InvertedElliptical
  216.              { %def --SPOT FUNCTION : ELLIPTICAL
  217.                 dup mul .9 mul
  218.                 exch dup mul add
  219.                 1 sub
  220.         } bind def
  221.  
  222. %----------------------------------------------------------------------------
  223.  
  224. %@Fill
  225. /Archimedes %Archimedes,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  226.    {
  227.    /BackgroundGray exch -1 100 InRange def
  228.    /ForegroundGray exch 0 100 InRange def
  229.    /Linewidth      exch 0 100 InRange def
  230.    /Frequency      exch 2 100 InRange def
  231.  
  232.    /newfont 10 dict def
  233.    newfont begin
  234.  
  235.    /FontMatrix [3 sqrt 1 add 1 exch div  0  0
  236.                3 sqrt 1 add 1 exch div  0  0] def
  237.    /FontType 3 def
  238.    /FontBBox [0 0 3 sqrt 1 add 3 sqrt 1 add] def
  239.    /Encoding 256 array def
  240.    0 1 255 {Encoding exch /.notdef put} for
  241.  
  242.    /BuildChar
  243.      { 3 sqrt 1 add  0
  244.        -0.1 -0.1 3 sqrt 1.1 add 3 sqrt 1.1 add
  245.        setcachedevice
  246.        pop begin
  247.  
  248.        0 0 moveto
  249.        1 2 div  0 lineto
  250.        0  3 sqrt 2 div lineto
  251.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  252.        0  3 sqrt 2 div 1 add lineto
  253.        0  3 sqrt 2 div lineto
  254.  
  255.        0  3 sqrt 2 div 1 add moveto
  256.        1 2 div  3 sqrt 1 add lineto
  257.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  258.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  259.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  260.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  261.        3 sqrt 1 2 div add  3 sqrt 1 add lineto
  262.        3 sqrt 1 add  3 sqrt 2 div 1 add lineto
  263.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  264.        3 sqrt 1 add  3 sqrt 2 div lineto
  265.        3 sqrt 1 2 div add  0 lineto
  266.        3 sqrt 1 add 2 div  1 2 div lineto
  267.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  268.  
  269.        3 sqrt 1 add 2 div  3 sqrt 1 add moveto
  270.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  271.  
  272.        3 sqrt 1 add 2 div  0  moveto
  273.        3 sqrt 1 add 2 div  1 2 div lineto
  274.  
  275.        1 2 div  0 moveto
  276.        3 sqrt 1 add 2 div  1 2 div lineto
  277.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  278.  
  279.        3 sqrt 1 2 div add  0 moveto
  280.        3 sqrt 1 add  0 lineto
  281.  
  282.        3 sqrt 1 2 div add  3 sqrt 1 add moveto
  283.        3 sqrt 1 add  3 sqrt 1 add lineto
  284.  
  285.        0  3 sqrt 1 add moveto
  286.        1 2 div  3 sqrt 1 add lineto
  287.  
  288.        3 sqrt 1 add  3 sqrt 2 div moveto
  289.        3 sqrt 1 add  3 sqrt 2 div 1 add lineto
  290.  
  291.        Linewidth pntsize div 3 sqrt 1 add mul setlinewidth
  292.        stroke
  293.  
  294.       end
  295.      } def
  296.    end
  297.  
  298.    /pntsize 2000 Frequency div def
  299.    /FillFont newfont definefont pop
  300.    /FillFont findfont pntsize scalefont setfont
  301.  
  302.    eoclip
  303.    BackgroundGray 0 ge
  304.       { BackgroundGray 100 div 1 exch sub setgray fill }
  305.       { newpath } ifelse
  306.  
  307.    ForegroundGray 100 div 1 exch sub setgray
  308.  
  309.    Bblly pntsize Bbury
  310.      { Bbllx pntsize Bburx
  311.        { 1 index moveto
  312.        (a) show
  313.        } for
  314.      pop
  315.      } for
  316.    } bind def
  317.  
  318. %@Fill
  319. /Bars %Bars,4, Width:=10, Spacingá(%):=100, Maximumágray:=100, Minimumágray:=10
  320.    {
  321.    /MinGrey exch 0 100 InRange def
  322.    /MaxGrey exch MinGrey 100 InRange def
  323.    /Spacing exch 0 300 InRange def
  324.    /Width exch 1 100 InRange def
  325.  
  326.    /dgrey MaxGrey MinGrey sub def
  327.    /inc 1 Spacing 100 div add def
  328.  
  329.    eoclip newpath
  330.  
  331.    currentscreen
  332.    3 -1 roll
  333.    pop 90
  334.    3 1 roll
  335.    setscreen
  336.  
  337.    Bbllx Bblly translate
  338.    /dx Bburx Bbllx sub Width div def
  339.    /dy Bbury Bblly sub Width div def
  340.    Width 10 mul dup scale
  341.    /mtx matrix currentmatrix def
  342.    .05 setlinewidth
  343.  
  344.    0 inc dx
  345.      { 0 translate
  346.       -.5 .05 .5
  347.          { dup 0 moveto
  348.            dup dy lineto
  349.            dup mul 0.250001 exch sub sqrt 2 mul
  350.            dgrey mul MaxGrey exch sub 100 div 1 exch sub setgray
  351.            stroke
  352.          } for
  353.       mtx setmatrix
  354.       } for
  355.    dx 0 translate
  356.    90 rotate
  357.    /mtx matrix currentmatrix def
  358.    0 inc dy
  359.      { 0 translate
  360.       -.5 .05 .5
  361.          { dup 0 moveto
  362.            dup dx lineto
  363.            dup mul 0.250001 exch sub sqrt 2 mul
  364.            dgrey mul MaxGrey exch sub 100 div 1 exch sub setgray
  365.            stroke
  366.          } for
  367.       mtx setmatrix
  368.       } for
  369.    } bind def
  370.  
  371. %@Fill
  372. /Basketweave %Basketweave,4, Frequency:=6, Lineáwidth:=10, Foregroundágray:=100, Weaveáwidthá(%):=100
  373.    {
  374.    /Width exch 1 200 InRange def
  375.    /Grey exch 0 100 InRange def
  376.    /LineWidth exch 0 100 InRange def
  377.    /Frequency exch 1 100 InRange def
  378.  
  379.    /dif Width 100 sub 100 div def
  380.  
  381.    /newfont 10 dict def
  382.    newfont begin
  383.  
  384.    /FontMatrix [.25  0
  385.                 0    .25
  386.                 0    0] def
  387.    /FontType 3 def
  388.    /FontBBox [0 0 4 4] def
  389.    /Encoding 256 array def
  390.    0 1 255 {Encoding exch /.notdef put} for
  391.    Encoding 97 /Holes put
  392.    Encoding 98 /Weave put
  393.  
  394.    /CharProcs 3 dict def
  395.    CharProcs begin
  396.    /.notdef {} def
  397.    /Holes
  398.       {
  399.       1 dif moveto
  400.       2 dif sub 1 lineto
  401.       1 2 dif sub lineto
  402.       dif 1 lineto
  403.       closepath
  404.       fill
  405.  
  406.       3 2 dif add moveto
  407.       4 dif sub 3 lineto
  408.       3 4 dif sub lineto
  409.       2 dif add 3 lineto
  410.       closepath
  411.       fill
  412.       } def
  413.    /Weave
  414.       {
  415.       0 3 dif add moveto
  416.       1 dif sub 4 lineto
  417.  
  418.       0 1 dif add moveto
  419.       1 dif lineto
  420.  
  421.       3 dif sub 4 moveto
  422.       4 dif sub 3 lineto
  423.  
  424.       1 dif sub 0 moveto
  425.       2 dif sub 1 lineto
  426.  
  427.       4 3 dif add moveto
  428.       3 2 dif add lineto
  429.  
  430.       3 dif sub 0 moveto
  431.       1 2 dif sub lineto
  432.  
  433.       4 1 dif add moveto
  434.       2 dif add 3 lineto
  435.  
  436.       dif 1 moveto
  437.       3 4 dif sub lineto
  438.  
  439.       LineWidth 100 div setlinewidth
  440.       stroke
  441.       } def
  442.    end
  443.  
  444.    /BuildChar
  445.      { 4  0
  446.        -0.1 -0.1 4.1 4.1
  447.        setcachedevice
  448.        exch begin
  449.        Encoding exch get
  450.        CharProcs exch get
  451.        end
  452.        exec
  453.      } def
  454.    end
  455.  
  456.    /pntsize 1000 Frequency div def
  457.  
  458.    /FillFont newfont definefont pop
  459.    /FillFont findfont pntsize scalefont setfont
  460.  
  461.    eoclip newpath
  462.  
  463.    Grey 100 div 1 exch sub setgray
  464.    Bblly pntsize Bbury
  465.      { Bbllx exch moveto
  466.        { (a) show
  467.          currentpoint
  468.          pop Bburx gt
  469.          {exit} if
  470.        } loop
  471.      } for
  472.  
  473.    0 setgray
  474.    Bblly pntsize Bbury
  475.      { Bbllx exch moveto
  476.        { (b) show
  477.          currentpoint
  478.          pop Bburx gt
  479.          {exit} if
  480.        } loop
  481.      } for
  482.  
  483.    } bind def
  484.  
  485. %@Fill
  486. /Birds %Birds,4, Frequency:=8, Lineáwidth:=4, Foregroundágray:=100, Backgroundágray:=0
  487.    {
  488.    /BackgroundGray exch -1 100 InRange def
  489.    /ForegroundGray exch 0 100 InRange def
  490.    /Linewidth      exch 0 100 InRange def
  491.    /Frequency      exch 2 100 InRange def
  492.  
  493.    /newfont 10 dict def
  494.    newfont begin
  495.  
  496.    /FontMatrix [1 162 div  0
  497.                 0         1 162 div
  498.                 0         0] def
  499.    /FontType 3 def
  500.    /FontBBox [-92 -150 46 12] def
  501.    /Encoding 256 array def
  502.    0 1 255 {Encoding exch /.notdef put} for
  503.  
  504.    /BuildChar
  505.      { 138  0
  506.        -92 -150 46 12
  507.        setcachedevice
  508.        pop begin
  509.  
  510.        2 {
  511.          gsave
  512.          3 {
  513.            -10 -8 moveto
  514.            60 24  -54 60  -9 72 curveto
  515.            -2.5 73.7  11.5 70.3  29 75.4 curveto
  516.  
  517.            -54 6 moveto
  518.            -45 14  -27 16  -18 18 curveto
  519.            27 27  -81 54  -9 90 curveto
  520.  
  521.            -126 9 moveto
  522.            -114 27  -66 66  -54 24 curveto
  523.            -53 21  -49 15  -43 12 curveto
  524.  
  525.            [ -1     0
  526.               0     1
  527.               0     0 ] concat
  528.              135 -81 translate
  529.          } repeat
  530.  
  531.        Linewidth pntsize div 162 mul setlinewidth
  532.        stroke
  533.        grestore
  534.        138 0 translate
  535.  
  536.      } repeat
  537.  
  538.      end
  539.      } def
  540.    end
  541.  
  542.    /pntsize 1174 Frequency div def
  543.  
  544.    /FillFont newfont definefont pop
  545.    /FillFont findfont pntsize scalefont setfont
  546.  
  547.    eoclip
  548.    BackgroundGray 0 ge
  549.       { BackgroundGray 100 div 1 exch sub setgray fill }
  550.       { newpath } ifelse
  551.  
  552.    ForegroundGray 100 div 1 exch sub setgray
  553.  
  554.    /urx Bburx pntsize add def
  555.    /ury Bbury pntsize add def
  556.     Bblly pntsize ury
  557.         { Bbllx exch moveto
  558.         { (a) show
  559.           currentpoint
  560.           pop urx gt
  561.           {exit} if
  562.         } loop
  563.       } for
  564.     } bind def
  565.  
  566. %@Fill
  567. /Bricks %Bricks,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  568.    {
  569.    /BackgroundGray exch -1 100 InRange def
  570.    /ForegroundGray exch 0 100 InRange def
  571.    /Linewidth      exch 0 100 InRange def
  572.    /Frequency      exch 2 100 InRange def
  573.  
  574.    /newfont 10 dict def
  575.    newfont begin
  576.  
  577.    /FontMatrix [1  0  0
  578.                 1  0  0] def
  579.    /FontType 3 def
  580.    /FontBBox [0 0 1 1] def
  581.    /Encoding 256 array def
  582.    0 1 255 {Encoding exch /.notdef put} for
  583.  
  584.    /BuildChar
  585.      { 1  0
  586.        -0.1 -0.1 1.1 1.1
  587.        setcachedevice
  588.        pop begin
  589.  
  590.        0 0 moveto
  591.        1 0 lineto
  592.        1 .5 lineto
  593.        0 .5 lineto
  594.        closepath
  595.        .5 .5 moveto
  596.        .5 1 lineto
  597.  
  598.        Linewidth pntsize div setlinewidth
  599.        stroke
  600.  
  601.       end
  602.      } def
  603.    end
  604.  
  605.    /pntsize 1000 Frequency div def
  606.  
  607.    /FillFont newfont definefont pop
  608.    /FillFont findfont pntsize scalefont setfont
  609.  
  610.    eoclip
  611.    BackgroundGray 0 ge
  612.       { BackgroundGray 100 div 1 exch sub setgray fill }
  613.       { newpath } ifelse
  614.  
  615.    ForegroundGray 100 div 1 exch sub setgray
  616.  
  617.    Bblly pntsize Bbury
  618.      { Bbllx exch moveto
  619.        { (a) show
  620.          currentpoint
  621.          pop Bburx gt
  622.          {exit} if
  623.        } loop
  624.      } for
  625.    } bind def
  626.  
  627. %@Fill
  628. /Bubbles %Bubbles,5, Numberá(sqáinch):=25, Maxásize:=300:, Minásize:=10, Lineáwidth:=10, Randomáseed:=0
  629.    { srand
  630.    /LineWidth exch 0 50 InRange def
  631.    /MinSize exch 1 1000 InRange def
  632.    /MaxSize exch MinSize 1000 InRange def
  633.    /Number exch 1 250 InRange def
  634.  
  635.    eoclip
  636.    newpath
  637.    /pntsize MaxSize MinSize div cvi def
  638.    /dx Bburx Bbllx sub def
  639.    /dy Bbury Bblly sub def
  640.  
  641.    dx dy mul Number mul 1000000 div cvi
  642.    {  rand dx mod Bbllx add
  643.       rand dy mod Bblly add
  644.       rand pntsize mod 1 add pntsize exch div MinSize mul
  645.       3 copy
  646.       2 index add
  647.       exch
  648.       moveto
  649.       pop
  650.       0 360 arc
  651.       gsave
  652.       0 setgray
  653.       LineWidth setlinewidth
  654.       stroke
  655.       grestore
  656.       1 setgray
  657.       fill
  658.       } repeat
  659.  
  660.    } bind def
  661.  
  662. %@Fill
  663. /Carpet %Carpet,5, Frequencyá(dpi):=72, Gray:=100, Gammaá(boxásize):=50, Modáfactor:=3, Alpha:=10
  664.    {
  665.    /Alpha exch def
  666.    /Modf exch def
  667.    /Gamma exch def
  668.    /Grey exch 0 100 InRange def
  669.    /Frequency exch 10 300 InRange def
  670.  
  671.    /Beta1 -10 def
  672.    /Beta2 -15 def
  673.  
  674.    eoclip newpath
  675.  
  676.    /wz 360 def
  677.    2 1 Gamma sqrt
  678.       { dup Gamma exch mod
  679.       0 eq { dup wz exch mod
  680.            0 eq { /wz wz 2 index div cvi def
  681.                 } if
  682.            } if
  683.       pop
  684.       } for
  685.  
  686.    /newfont 10 dict def
  687.    newfont begin
  688.  
  689.    /FontMatrix [1 wz div  0
  690.                 0          1 wz div
  691.                 0          0] def
  692.    /FontType 3 def
  693.    /FontBBox [0 0 wz wz] def
  694.    /Encoding 256 array def
  695.    0 1 255 {Encoding exch /.notdef put} for
  696.  
  697.    /BuildChar
  698.      { wz  0
  699.        -0.1 -0.1 wz 0.1 add wz 0.1 add
  700.        setcachedevice
  701.        pop begin
  702.  
  703.       0 1 wz
  704.          { 0 1 wz
  705.             { 1 index 2 copy
  706.             Gamma mul Beta2 add sin
  707.             exch Gamma mul Beta1 add sin
  708.             add Alpha mul cvi Modf mod
  709.             0 eq { moveto
  710.                   1 0 rlineto
  711.                   0 1 rlineto
  712.                   -1 0 rlineto
  713.                   closepath
  714.                   fill }
  715.                  { pop pop } ifelse
  716.             }   for
  717.          pop
  718.          } for
  719.  
  720.        end
  721.      } def
  722.    end
  723.  
  724.    /pntsize wz 1000 mul Frequency div def
  725.  
  726.    /FillFont newfont definefont pop
  727.    /FillFont findfont pntsize scalefont setfont
  728.  
  729.    Grey 100 div 1 exch sub setgray
  730.    Bblly pntsize Bbury
  731.      { Bbllx 1 index moveto
  732.        { (a) show
  733.          currentpoint
  734.          dup 3 index sub
  735.          pntsize 2 div gt { pntsize sub } if
  736.          1 index Bburx gt
  737.          {pop pop pop exit} if
  738.          moveto
  739.        } loop
  740.      } for
  741.    } bind def
  742.  
  743. %@Fill
  744. /CircleGrid %CircleGrid,5, Frequency:=6, Lineáwidthá1:=6, Lineáwidthá2:=6, Grayá1:=40, Grayá2:=40
  745.    {
  746.    /Grey2 exch -1 100 InRange def
  747.    /Grey1 exch -1 100 InRange def
  748.    /LineWidth2 exch 0 100 InRange def
  749.    /LineWidth1 exch 0 100 InRange def
  750.    /Frequency exch 1 72 InRange def
  751.  
  752.    /newfont 10 dict def
  753.    newfont begin
  754.  
  755.    /FontMatrix [1 3 sqrt 3 mul div  0
  756.                 0                   1 3 sqrt 3 mul div
  757.                 0                   0] def
  758.    /FontType 3 def
  759.    /FontBBox [0 0 2 3 sqrt 3 mul] def
  760.  
  761.    /Encoding 256 array def
  762.    0 1 255 {Encoding exch /.notdef put} for
  763.    Encoding 97 /OneCircle put
  764.    Encoding 98 /OneCircleFilled put
  765.    Encoding 99 /TwoCircles put
  766.    Encoding 100 /TwoCirclesFilled put
  767.  
  768.    /CharProcs 5 dict def
  769.    CharProcs begin
  770.    /.notdef {} def
  771.    /OneCircle
  772.      { 1 3 sqrt 2 div add  3 sqrt 5 mul 2 div moveto
  773.        1  3 sqrt 5 mul 2 div  3 sqrt 2 div 0 360 arc
  774.  
  775.        LineWidth1 pntsize div 3 sqrt 3 mul mul setlinewidth
  776.        stroke
  777.    } def
  778.  
  779.    /OneCircleFilled
  780.      { 1 3 sqrt 2 div add  3 sqrt 5 mul 2 div moveto
  781.        1  3 sqrt 5 mul 2 div  3 sqrt 2 div 0 350 arc
  782.  
  783.        fill
  784.    } def
  785.  
  786.    /TwoCircles
  787.      { 1 3 sqrt 2 div add  3 sqrt 2 div moveto
  788.        1 3 sqrt 2 div dup 0 360 arc
  789.  
  790.        1 3 sqrt 2 div add  3 sqrt 3 mul 2 div moveto
  791.        1  3 sqrt 3 mul 2 div  3 sqrt 2 div 0 360 arc
  792.  
  793.        LineWidth2 pntsize div 3 sqrt 3 mul mul setlinewidth
  794.        stroke
  795.    } def
  796.  
  797.    /TwoCirclesFilled
  798.      { 1 3 sqrt 2 div add  3 sqrt 2 div moveto
  799.        1 3 sqrt 2 div dup 0 360 arc
  800.  
  801.        1 3 sqrt 2 div add  3 sqrt 3 mul 2 div moveto
  802.        1  3 sqrt 3 mul 2 div  3 sqrt 2 div 0 360 arc
  803.  
  804.        fill
  805.    } def
  806.  
  807.    end
  808.  
  809.    /BuildChar
  810.      {3 2 div  3 sqrt 3 mul 2 div
  811.       -0.1 -0.1 2.1  3 sqrt 3 mul 0.1 add
  812.       setcachedevice
  813.       exch begin
  814.       Encoding exch get
  815.       CharProcs exch get
  816.       end
  817.       exec
  818.      }def
  819.    end
  820.  
  821.    /pntsize 3000 Frequency div def
  822.  
  823.    /FillFont newfont definefont pop
  824.    /FillFont findfont pntsize scalefont setfont
  825.  
  826.    /Bbllx Bbllx pntsize sub def
  827.    /Bblly Bblly pntsize sub def
  828.    /Bburx Bburx pntsize add def
  829.    /Bbury Bbury pntsize add def
  830.  
  831.    eoclip newpath
  832.  
  833.    Grey1 0 ge
  834.       { Grey1 100 div 1 exch sub setgray
  835.       Bblly pntsize Bbury
  836.         { Bbllx 1 index moveto
  837.           { (b) show
  838.             currentpoint
  839.             dup 3 index sub
  840.             pntsize 2.1 div gt { pntsize sub } if
  841.             1 index Bburx gt
  842.             {pop pop pop exit} if
  843.             moveto
  844.           } loop
  845.        } for
  846.       } if
  847.  
  848.    Grey2 0 ge
  849.       { Grey2 100 div 1 exch sub setgray
  850.       Bblly pntsize Bbury
  851.         { Bbllx 1 index moveto
  852.           { (d) show
  853.             currentpoint
  854.             dup 3 index sub
  855.             pntsize 2.1 div gt { pntsize sub } if
  856.             1 index Bburx gt
  857.             {pop pop pop exit} if
  858.             moveto
  859.           } loop
  860.         } for
  861.       } if
  862.  
  863.    LineWidth1 0 gt
  864.       { 0 setgray
  865.       Bblly pntsize Bbury
  866.         { Bbllx 1 index moveto
  867.           { (a) show
  868.             currentpoint
  869.             dup 3 index sub
  870.             pntsize 2.1 div gt { pntsize sub } if
  871.             1 index Bburx gt
  872.             {pop pop pop exit} if
  873.             moveto
  874.           } loop
  875.         } for
  876.       } if
  877.  
  878.    LineWidth2 0 gt
  879.       { 0 setgray
  880.       Bblly pntsize Bbury
  881.         { Bbllx 1 index moveto
  882.           { (c) show
  883.             currentpoint
  884.             dup 3 index sub
  885.             pntsize 2.1 div gt { pntsize sub } if
  886.             1 index Bburx gt
  887.             {pop pop pop exit} if
  888.             moveto
  889.           } loop
  890.         } for
  891.       } if
  892.  
  893.    } bind def
  894.  
  895. %@Fill
  896. /Construction %Construction,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  897.    {
  898.    /BackgroundGray exch -1 100 InRange def
  899.    /ForegroundGray exch 0 100 InRange def
  900.    /Linewidth      exch 0 100 InRange def
  901.    /Frequency      exch 2 100 InRange def
  902.  
  903.    /newfont 10 dict def
  904.    newfont begin
  905.  
  906.    /FontMatrix  [ .1     0
  907.                   0      .1
  908.                   0      0] def
  909.    /FontType 3 def
  910.    /FontBBox [-1 -1 9.66 11] def
  911.    /Encoding 256 array def
  912.    0 1 255 {Encoding exch /.notdef put} for
  913.  
  914.    /BuildChar
  915.      { 8.66 5
  916.        -1 -1 9.66 11
  917.        setcachedevice
  918.        pop begin
  919.  
  920.        1 0 moveto
  921.        0 0 1 -60 300 arc
  922.        3 sqrt 5 mul .5 add  5 3 sqrt 2 div sub lineto
  923.        3 sqrt 5 mul  5  1  -60 420 arc
  924.        .5  10 3 sqrt 2 div add lineto
  925.        0 10 1 60 180 arc
  926.        -1 0 lineto
  927.  
  928.        -.5 3 sqrt 2 div moveto
  929.        3 sqrt 5 mul .5 sub  5 3 sqrt 2 div add lineto
  930.        3 sqrt 5 mul .5 sub  5 3 sqrt 2 div sub moveto
  931.        -.5  10 3 sqrt 2 div sub lineto
  932.        1 10 moveto
  933.        1 0 lineto
  934.  
  935.        Linewidth pntsize div 10 mul setlinewidth
  936.        stroke
  937.       end
  938.      } def
  939.    end
  940.  
  941.    /pntsize 1126 Frequency div def
  942.    /FillFont newfont definefont pop
  943.    /FillFont findfont pntsize scalefont setfont
  944.  
  945.    /Bbllx Bbllx pntsize sub def
  946.  
  947.    eoclip
  948.    BackgroundGray 0 ge
  949.       { BackgroundGray 100 div 1 exch sub setgray fill }
  950.       { newpath } ifelse
  951.  
  952.    ForegroundGray 100 div 1 exch sub setgray
  953.  
  954.    Bblly pntsize Bbury
  955.      { Bbllx 1 index moveto
  956.        { (a) show
  957.          currentpoint
  958.          dup 3 index sub
  959.          pntsize 2.1 div gt { pntsize sub } if
  960.          1 index Bburx gt
  961.          {pop pop pop exit} if
  962.          moveto
  963.        } loop
  964.      } for
  965.    } bind def
  966.  
  967. %@Fill
  968. /Cracks %Cracks,5, Number:=20, Maxálength:=125, Minálength:=75, Stepálength:=14, Lineáwidth:=5
  969.    {
  970.    /LineWidth exch 0 100 InRange def
  971.    /StepLength exch 1 100 InRange def
  972.    /MinLength exch 1 300 InRange def
  973.    /MaxLength exch MinLength 300 InRange MinLength wDstChck def
  974.    /Number exch 1 100 InRange def
  975.  
  976.    eoclip newpath
  977.  
  978.    /dx Bburx Bbllx sub def
  979.    /dy Bbury Bblly sub def
  980.  
  981.    Number {
  982.       gsave
  983.       /theta rand 360 mod def
  984.  
  985.       rand dx mod Bbllx add
  986.       rand dy mod Bblly add
  987.       moveto
  988.  
  989.       StepLength dup scale
  990.       LineWidth StepLength div setlinewidth
  991.  
  992.       MinLength
  993.       MaxLength MinLength sub
  994.       rand 1 index mod 2 index add
  995.          {
  996.          currentpoint translate
  997.          rand 120 mod 60 sub theta add dup rotate
  998.          0 0 moveto
  999.          1 0 lineto
  1000.          stroke
  1001.          1 0 moveto
  1002.          neg rotate
  1003.          } repeat
  1004.       grestore
  1005.       pop pop
  1006.       } repeat
  1007.    } bind def
  1008.  
  1009. %@Fill
  1010. /Craters %Craters,5, Number:=15, Maximumásize:=300, Minimumásize:=75, Backgroundágray:=0, Randomáseed:=0
  1011.    { srand
  1012.    /BackgroundGrey exch 0 100 InRange def
  1013.    /MinSize exch 1 500 InRange def
  1014.    /MaxSize exch MinSize 500 InRange MinSize wDstChck def
  1015.    /Number exch 1 50 InRange def
  1016.  
  1017.    eoclip
  1018.    BackgroundGrey 100 div 1 exch sub setgray
  1019.    fill
  1020.  
  1021.    /pntsize 333 def
  1022.    /dx Bburx Bbllx sub def
  1023.    /dy Bbury Bblly sub def
  1024.    /DifSize MaxSize MinSize sub cvi def
  1025.  
  1026.    Bbllx Bblly translate
  1027.  
  1028.    matrix currentmatrix
  1029.    dx dy mul 1000000 div Number mul cvi {
  1030.       dup
  1031.       rand dx mod  rand dy mod  translate
  1032.       /size rand DifSize mod MinSize add def
  1033.       0 0 size .7 mul  0 360 arc
  1034.       BackgroundGrey 100 div 1 exch sub setgray fill
  1035.  
  1036.       0
  1037.          { rand 18 mod add 10 add
  1038.          dup 360 gt { pop exit } if
  1039.          dup rotate
  1040.          size 5 div  0 moveto
  1041.          rand 300 mod 200 add 500 div size mul  0 lineto
  1042.          dup neg rotate
  1043.          } loop
  1044.  
  1045.       0 setgray
  1046.       5 setlinewidth
  1047.       stroke
  1048.       setmatrix
  1049.       } repeat
  1050.    pop
  1051.    } bind def
  1052.  
  1053. %@Fill
  1054. /Crosshatching %Crosshatching,5, Maxádistance:=75, Minádistance:=0, Lineáwidth:=5, Angle:=45, Randomáseed:=0
  1055.    { srand
  1056.    /Angle exch -180 180 InRange def
  1057.    /LineWidth exch 0 100 InRange def
  1058.    /MinDist exch 0 500 InRange def
  1059.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  1060.  
  1061.    eoclip
  1062.    newpath
  1063.  
  1064.    /pntsize MaxDist MinDist sub def
  1065.    /dx2 Bburx Bbllx sub 2 div def
  1066.    /dy2 Bbury Bblly sub 2 div def
  1067.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  1068.  
  1069.    Bbllx Bblly translate
  1070.    dx2 dy2 translate
  1071.    Angle rotate
  1072.    LineWidth setlinewidth
  1073.  
  1074.    /wd hyp2 neg def
  1075.       { /wd rand pntsize mod MinDist add wd add def
  1076.       wd hyp2 neg moveto
  1077.       wd hyp2 lineto
  1078.       stroke
  1079.       wd hyp2 gt {exit} if
  1080.       } loop
  1081.  
  1082.    Angle -2 mul rotate
  1083.    /wd hyp2 neg def
  1084.       { /wd rand pntsize mod MinDist add wd add def
  1085.       wd hyp2 neg moveto
  1086.       wd hyp2 lineto
  1087.       stroke
  1088.       wd hyp2 gt {exit} if
  1089.       } loop
  1090.  
  1091.    } bind def
  1092.  
  1093. %@Fill
  1094. /CrystalLattice %CrystalLattice,4, Frequency:=4, Backágray:=100, Frontágray:=0, Scalingá(%):=75
  1095.    {
  1096.    /Scaling exch 10 100 InRange def
  1097.    /FrontGrey exch 0 100 InRange def
  1098.    /BackGrey exch -100 100 InRange def
  1099.    /Frequency exch 1 50 InRange def
  1100.  
  1101.    /newfont 10 dict def
  1102.    newfont begin
  1103.  
  1104.    /FontMatrix [1                   0
  1105.                 0                   1
  1106.                 0                   0] def
  1107.    /FontType 3 def
  1108.    /FontBBox [0 0 1 1] def
  1109.    /Encoding 256 array def
  1110.    0 1 255 {Encoding exch /.notdef put} for
  1111.  
  1112.    /BuildChar
  1113.      { 1 0
  1114.        -0.1 -0.1 1.1 1.1
  1115.        setcachedevice
  1116.        pop begin
  1117.  
  1118.        gsave
  1119.        0 0 moveto
  1120.        3 { 1 0 lineto
  1121.          currentpoint translate
  1122.          90 rotate
  1123.          } repeat
  1124.        closepath
  1125.        .05 setlinewidth
  1126.        stroke
  1127.        grestore
  1128.  
  1129.        gsave
  1130.        4 { .2 0 moveto
  1131.          0 0 .2 0 360 arc
  1132.          fill
  1133.          1 0 translate
  1134.          90 rotate
  1135.          } repeat
  1136.        grestore
  1137.  
  1138.        end
  1139.      } def
  1140.    end
  1141.  
  1142.    /pntsize 1000 Frequency div cvi def
  1143.  
  1144.    /FillFont newfont definefont pop
  1145.    /FillFont findfont pntsize scalefont setfont
  1146.  
  1147.    /dx Bburx Bbllx sub def
  1148.    /dy Bbury Bblly sub def
  1149.  
  1150.    eoclip newpath
  1151.  
  1152.    currentscreen
  1153.    3 -1 roll
  1154.    pop 120
  1155.    3 1 roll
  1156.    setscreen
  1157.  
  1158.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1159.  
  1160.    /dx dx 100 mul Scaling div def
  1161.    /dy dy 100 mul Scaling div def
  1162.  
  1163.    Scaling 100 div dup scale
  1164.    100 Scaling div log 10 div 10 exch exp
  1165.    BackGrey 0 100 InRange 100 div  FrontGrey BackGrey sub 1000 div  FrontGrey .1 sub 100 div
  1166.       { 1 exch sub setgray
  1167.       dup dup scale
  1168.       dy 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1169.         pntsize   dy pntsize add 2 div
  1170.         { dx 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1171.           1 index moveto
  1172.           { (a) show
  1173.             currentpoint
  1174.             dup 3 index sub
  1175.             pntsize 2.1 div gt { pntsize sub } if
  1176.             1 index dx pntsize add 2 div gt
  1177.             { pop pop pop exit } if
  1178.             moveto
  1179.           } loop
  1180.         } for
  1181.       } for
  1182.       pop
  1183.    } bind def
  1184.  
  1185. %@Fill
  1186. /Denim %Denim,5, Frequency:=72, Maxágray:=100, Minágray:=0, Halftoneáscreen:=60, Randomáseed:=0
  1187.    { srand
  1188.    /Screen exch 30 300 InRange def
  1189.    /MinGrey exch 0 100 InRange def
  1190.    /MaxGrey exch MinGrey 100 InRange def
  1191.    /Frequency exch 1 300 InRange def
  1192.  
  1193.    eoclip newpath
  1194.  
  1195.    currentscreen
  1196.    3 -1 roll
  1197.    pop Screen
  1198.    3 1 roll
  1199.    setscreen
  1200.  
  1201.    /dx Bburx Bbllx sub def
  1202.    /dy Bbury Bblly sub def
  1203.    /wf Frequency 1000 div def
  1204.    /dgrey MaxGrey MinGrey sub 100 div def
  1205.  
  1206.    Bbllx Bblly translate
  1207.    /str 512 string def
  1208.  
  1209.    dx wf mul cvi 1 add  dy wf mul cvi 1 add  8  [wf 0 0 wf 0 0]
  1210.       { dgrey MinGrey 2.55 mul
  1211.       0 1 511
  1212.          { str exch
  1213.          rand -11 bitshift 255 and 4 index mul 3 index add cvi
  1214.          put
  1215.          } for
  1216.       pop pop
  1217.       str
  1218.      }image
  1219.  
  1220.    } bind def
  1221.  
  1222. %@Fill
  1223. /DNA %DNA,5, Frequency:=4, Lineáwidth:=1, Foregroundágray:=100, Backgroundágray:=0, Spacingá(%):=100
  1224.    {
  1225.    /Spacing        exch 1 300 InRange def
  1226.    /BackgroundGray exch -1 100 InRange def
  1227.    /ForegroundGray exch 0 100 InRange def
  1228.    /Linewidth      exch 0 100 InRange def
  1229.    /Frequency      exch 1 100 InRange def
  1230.  
  1231.    /newfont 10 dict def
  1232.    newfont begin
  1233.  
  1234.    /FontMatrix [1 360 div           0
  1235.                 0                   1 360 div
  1236.                 0                   0] def
  1237.    /FontType 3 def
  1238.    /FontBBox [-20 0 20 360] def
  1239.    /Encoding 256 array def
  1240.    0 1 255 {Encoding exch /.notdef put} for
  1241.  
  1242.    /BuildChar
  1243.      { Spacing 110
  1244.        -20  0 20 360
  1245.        setcachedevice
  1246.        pop begin
  1247.  
  1248.        Linewidth pntsize mul 110 div setlinewidth
  1249.        0 0 moveto
  1250.        0 1 360
  1251.           { dup sin 20 mul exch lineto
  1252.           } for
  1253.        stroke
  1254.        20 0 moveto
  1255.        0 1 360
  1256.           { dup cos 20 mul exch lineto
  1257.           } for
  1258.        stroke
  1259.        0 20 360
  1260.           { dup dup sin 20 mul exch moveto
  1261.           dup cos 20 mul exch lineto
  1262.           } for
  1263.        stroke
  1264.  
  1265.        end
  1266.      } def
  1267.    end
  1268.  
  1269.    /pntsize 2000 Frequency div def
  1270.  
  1271.    /FillFont newfont definefont pop
  1272.    /FillFont findfont pntsize scalefont setfont
  1273.  
  1274.    eoclip
  1275.    BackgroundGray 0 ge
  1276.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1277.       { newpath } ifelse
  1278.  
  1279.    ForegroundGray 100 div 1 exch sub setgray
  1280.  
  1281.    Bblly pntsize sub pntsize Bbury pntsize add
  1282.      { Bbllx 1 index moveto
  1283.        { (a) show
  1284.          currentpoint
  1285.          dup 3 index sub
  1286.          pntsize 2.1 div gt { pntsize sub } if
  1287.          1 index Bburx gt
  1288.          {pop pop pop exit} if
  1289.          moveto
  1290.        } loop
  1291.      } for
  1292.    } bind def
  1293.  
  1294. %@Fill
  1295. /Fishscale %Fishscale,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  1296.    {
  1297.    /BackgroundGray exch -1 100 InRange def
  1298.    /ForegroundGray exch 0 100 InRange def
  1299.    /Linewidth      exch 0 100 InRange def
  1300.    /Frequency      exch 2 100 InRange def
  1301.  
  1302.    /newfont 10 dict def
  1303.    newfont begin
  1304.  
  1305.    /FontMatrix [1  0  0
  1306.                 1  0  0] def
  1307.    /FontType 3 def
  1308.    /FontBBox [0 0 1 1] def
  1309.    /Encoding 256 array def
  1310.    0 1 255 {Encoding exch /.notdef put} for
  1311.  
  1312.    /BuildChar
  1313.      { 1  0
  1314.        0 0 1 1
  1315.        setcachedevice
  1316.        pop begin
  1317.  
  1318.        0.5 0.5 0.5 360 180 arcn
  1319.        0 1 0.5 270 360 arc
  1320.        1 1 0.5 180 270 arc
  1321.  
  1322.        Linewidth pntsize div setlinewidth
  1323.        stroke
  1324.  
  1325.       end
  1326.      } def
  1327.    end
  1328.  
  1329.    /pntsize 1000 Frequency div def
  1330.    /FillFont newfont definefont pop
  1331.    /FillFont findfont pntsize scalefont setfont
  1332.  
  1333.    eoclip
  1334.    BackgroundGray 0 ge
  1335.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1336.       { newpath } ifelse
  1337.  
  1338.    ForegroundGray 100 div 1 exch sub setgray
  1339.  
  1340.     Bblly pntsize Bbury
  1341.       { Bbllx exch moveto
  1342.         { (a) show
  1343.           currentpoint
  1344.           pop Bburx gt
  1345.           {exit} if
  1346.         } loop
  1347.       } for
  1348.     } bind def
  1349.  
  1350.  
  1351. %@Fill
  1352. /Grass %Grass,5, Number:=100, Maximumásize:=35, Minimumásize:=7, Gray:=0, Randomáseed:=0
  1353.     { srand
  1354.     /Grey exch -1 100 InRange def
  1355.     /MinSize exch 1 100 InRange def
  1356.     /MaxSize exch MinSize 100 InRange MinSize wDstChck def
  1357.     /Number exch 1 500 InRange def
  1358.  
  1359.     eoclip
  1360.     Grey 0 ge
  1361.        { Grey 100 div 1 exch sub setgray fill }
  1362.        { newpath } ifelse
  1363.  
  1364.     /Bbllx Bbllx MaxSize sub def
  1365.     /Bblly Bblly MaxSize sub def
  1366.  
  1367.     /dx Bburx Bbllx sub def
  1368.     /dy Bbury Bblly sub def
  1369.     /dSize MaxSize MinSize sub def
  1370.  
  1371.     dx dy mul 1000000 div Number mul cvi
  1372.        {
  1373.  
  1374.        matrix currentmatrix
  1375.  
  1376.        rand dx mod Bbllx add
  1377.        rand dy mod Bblly add
  1378.        translate
  1379.  
  1380.        rand dSize mod MinSize add
  1381.        dup scale
  1382.  
  1383.        -0.5 0 moveto
  1384.        rand 14 mod 7 sub
  1385.        -0.5 3  2 index 3 div 0.3 sub 10  4 index 10 curveto
  1386.        3 div 0.3 add 10 0.5 3 0.5 0 curveto
  1387.        gsave
  1388.        1 setgray
  1389.        fill
  1390.        grestore
  1391.        0.1 setlinewidth
  1392.        0 setgray
  1393.        stroke
  1394.  
  1395.        setmatrix
  1396.  
  1397.        } repeat
  1398.  
  1399.      } bind def
  1400.  
  1401. %@Fill
  1402. /Hatching %Hatching,5, Maxádistance:=75, Minádistance:=0, Lineáwidth:=5, Angle:=45, Randomáseed:=0
  1403.    { srand
  1404.    /Angle exch -180 180 InRange def
  1405.    /LineWidth exch 0 100 InRange def
  1406.    /MinDist exch 0 500 InRange def
  1407.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  1408.  
  1409.    eoclip
  1410.    newpath
  1411.  
  1412.    /pntsize MaxDist MinDist sub def
  1413.    /dx2 Bburx Bbllx sub 2 div def
  1414.    /dy2 Bbury Bblly sub 2 div def
  1415.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  1416.  
  1417.    Bbllx Bblly translate
  1418.    dx2 dy2 translate
  1419.    Angle rotate
  1420.    LineWidth setlinewidth
  1421.  
  1422.    /wd hyp2 neg def
  1423.  
  1424.       { /wd rand pntsize mod MinDist add wd add def
  1425.       wd hyp2 neg moveto
  1426.       wd hyp2 lineto
  1427.       stroke
  1428.       wd hyp2 gt {exit} if
  1429.       } loop
  1430.  
  1431.    } bind def
  1432.  
  1433. %@Fill
  1434. /Hexagons %Hexagons,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  1435.    {
  1436.    /BackgroundGray exch -1 100 InRange def
  1437.    /ForegroundGray exch 0 100 InRange def
  1438.    /LineWidth      exch 0 100 InRange def
  1439.    /Frequency      exch 2 100 InRange def
  1440.  
  1441.    /newfont 10 dict def
  1442.    newfont begin
  1443.  
  1444.    /FontMatrix [1 3 sqrt div        0
  1445.                 0                   1 3 sqrt div
  1446.                 0                   0] def
  1447.    /FontType 3 def
  1448.    /FontBBox [0 0 2 3 sqrt] def
  1449.    /Encoding 256 array def
  1450.    0 1 255 {Encoding exch /.notdef put} for
  1451.  
  1452.    /BuildChar
  1453.      { 3 2 div  3 sqrt 2 div
  1454.        -0.1 -0.1 2.1 3 sqrt 0.1 add
  1455.        setcachedevice
  1456.        pop begin
  1457.  
  1458.        1 2 div  0 moveto
  1459.        3 2 div  0 lineto
  1460.        2  3 sqrt 2 div lineto
  1461.        3 2 div  3 sqrt lineto
  1462.        1 2 div  3 sqrt lineto
  1463.        0  3 sqrt 2 div lineto
  1464.        closepath
  1465.  
  1466.        LineWidth pntsize div 3 sqrt mul setlinewidth
  1467.        stroke
  1468.  
  1469.       end
  1470.      } def
  1471.    end
  1472.  
  1473.    /pntsize 1155 Frequency div def
  1474.    /FillFont newfont definefont pop
  1475.    /FillFont findfont pntsize scalefont setfont
  1476.  
  1477.    eoclip
  1478.    BackgroundGray 0 ge
  1479.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1480.       { newpath } ifelse
  1481.  
  1482.    ForegroundGray 100 div 1 exch sub setgray
  1483.  
  1484.    Bblly pntsize Bbury
  1485.      { Bbllx 1 index moveto
  1486.        { (a) show
  1487.          currentpoint
  1488.          dup 3 index sub
  1489.          pntsize 2 div gt { pntsize sub } if
  1490.          1 index Bburx gt
  1491.          {pop pop pop exit} if
  1492.          moveto
  1493.        } loop
  1494.      } for
  1495.    } bind def
  1496.  
  1497. %@Fill
  1498. /Honeycomb %Honeycomb,5, Frequency:=4, Backágray:=100, Frontágray:=0, Scalingá(%):=75, Lineáwidth:=5
  1499.    {
  1500.    /LineWidth exch 0 100 InRange def
  1501.    /Scaling exch 10 100 InRange def
  1502.    /FrontGrey exch 0 100 InRange def
  1503.    /BackGrey exch -100 100 InRange def
  1504.    /Frequency exch 1 50 InRange def
  1505.  
  1506.    /newfont 10 dict def
  1507.    newfont begin
  1508.  
  1509.    /FontMatrix [1 3 sqrt div        0
  1510.                 0                   1 3 sqrt div
  1511.                 0                   0] def
  1512.    /FontType 3 def
  1513.    /FontBBox [0 0 2 3 sqrt] def
  1514.    /Encoding 256 array def
  1515.    0 1 255 {Encoding exch /.notdef put} for
  1516.  
  1517.    /BuildChar
  1518.      { 3 2 div  3 sqrt 2 div
  1519.        -0.1 -0.1 2.1 3 sqrt 0.1 add
  1520.        setcachedevice
  1521.        pop begin
  1522.  
  1523.        1 2 div  0 moveto
  1524.        3 2 div  0 lineto
  1525.        2  3 sqrt 2 div lineto
  1526.        3 2 div  3 sqrt lineto
  1527.        1 2 div  3 sqrt lineto
  1528.        0  3 sqrt 2 div lineto
  1529.        closepath
  1530.  
  1531.        LineWidth pntsize div 3 sqrt mul setlinewidth
  1532.        stroke
  1533.  
  1534.       end
  1535.      } def
  1536.    end
  1537.  
  1538.    /pntsize 1000 Frequency div cvi def
  1539.  
  1540.    /FillFont newfont definefont pop
  1541.    /FillFont findfont pntsize scalefont setfont
  1542.  
  1543.    /dx Bburx Bbllx sub def
  1544.    /dy Bbury Bblly sub def
  1545.  
  1546.    eoclip newpath
  1547.  
  1548.    currentscreen
  1549.    3 -1 roll
  1550.    pop 120
  1551.    3 1 roll
  1552.    setscreen
  1553.  
  1554.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1555.  
  1556.    /dx dx 100 mul Scaling div def
  1557.    /dy dy 100 mul Scaling div def
  1558.  
  1559.    Scaling 100 div dup scale
  1560.    100 Scaling div log 10 div 10 exch exp
  1561.    BackGrey 0 100 InRange 100 div  FrontGrey BackGrey sub 1000 div  FrontGrey .1 sub 100 div
  1562.       { 1 exch sub setgray
  1563.       dup dup scale
  1564.       dy 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1565.         pntsize   dy pntsize add 2 div
  1566.         { dx 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1567.           1 index moveto
  1568.           { (a) show
  1569.             currentpoint
  1570.             dup 3 index sub
  1571.             pntsize 2.1 div gt { pntsize sub } if
  1572.             1 index dx pntsize add 2 div gt
  1573.             { pop pop pop exit } if
  1574.             moveto
  1575.           } loop
  1576.         } for
  1577.       } for
  1578.    pop
  1579.    } bind def
  1580.  
  1581. %@Fill
  1582. /Impact %Impact,5, Lineáwidth:=5, Stepálength:=15, Maximumáangle:=40, Minimumáangle:=10, Randomáseed:=0
  1583.    { srand
  1584.    /MinAng exch 2 90 InRange def
  1585.    /MaxAng exch MinAng 90 InRange MinAng wDstChck def
  1586.    /Step exch 10 500 InRange def
  1587.    /Linewidth exch 0 100 InRange def
  1588.  
  1589.    eoclip
  1590.    newpath
  1591.  
  1592.    /dx Bburx Bbllx sub def
  1593.    /dy Bbury Bblly sub def
  1594.    /DifAng MaxAng MinAng sub def
  1595.  
  1596.    Bbllx Bblly translate
  1597.  
  1598.    dx 2 div  dy 2 div  translate
  1599.    Linewidth Step div setlinewidth
  1600.    Step Step scale
  1601.  
  1602.    /theta 0 def
  1603.       { matrix currentmatrix
  1604.       /theta theta rand DifAng mod add MinAng add def
  1605.       theta 360 gt {pop exit} if
  1606.       theta rotate
  1607.       0 0 moveto
  1608.       rand 150 mod 50 add
  1609.          {
  1610.          currentpoint translate
  1611.          rand 120 mod 60 sub theta add dup rotate
  1612.          1 0 lineto
  1613.          neg rotate
  1614.          } repeat
  1615.       stroke
  1616.       setmatrix
  1617.       } loop
  1618.    } bind def
  1619.  
  1620.  
  1621. %@Fill
  1622. /Landscape %Landscape,4, Depth:=6, Maximumágray:=100, Minimumágray:=0, Randomáseed:=0
  1623.    {
  1624.    srand
  1625.    /MinGrey exch 0 100 InRange def
  1626.    /MaxGrey exch MinGrey 100 InRange def
  1627.    /maxdepth exch 1 7 InRange def
  1628.  
  1629.    /dGrey MaxGrey MinGrey sub 200 div def
  1630.    /AvGrey MaxGrey MinGrey add 200 div def
  1631.  
  1632.    eoclip newpath
  1633.    /depth 0 def
  1634.    /ardepth 2 maxdepth 1 sub exp cvi def
  1635.    /height 1.8 8 maxdepth sub exp def
  1636.  
  1637.    /horz 0 def
  1638.    /vert 0 def
  1639.    /Array ardepth 1 add array def
  1640.    0 1 ardepth
  1641.       { Array exch ardepth 1 add array put
  1642.       } for
  1643.    0 1 ardepth
  1644.       { Array exch get
  1645.       0 1 ardepth
  1646.          { 2 copy 0 put
  1647.          pop
  1648.          } for
  1649.       pop
  1650.       } for
  1651.  
  1652.    /Square
  1653.       {
  1654.       /depth depth 1 add def
  1655.       depth maxdepth eq
  1656.       {
  1657.       Array horz get vert get dup 1 add dup moveto                    %ur
  1658.       Array horz 1 add get vert get dup 1 add lineto             %ul
  1659.       Array horz 1 add get vert 1 add get dup dup lineto         %ll
  1660.       Array horz get vert 1 add get dup 1 add exch lineto             %lr
  1661.       closepath
  1662.       sub
  1663.       dGrey mul AvGrey add
  1664.       setgray
  1665.       fill }
  1666.  
  1667.       {
  1668.       /wd 2 maxdepth depth sub 1 sub exp cvi def
  1669.  
  1670.       Array horz wd 2 mul add get vert wd 2 mul add get
  1671.       Array horz get vert wd 2 mul add get
  1672.       Array horz wd 2 mul add get vert get
  1673.       Array horz get vert get
  1674.  
  1675.       4 copy add add add 4 div
  1676.             rand 50 mod 25 sub height div 2 depth exp div add
  1677.       Array horz wd add get
  1678.             vert wd add 2 index put  pop
  1679.  
  1680.       3 index 2 index add 2 div
  1681.             rand 50 mod 25 sub height div 2 depth exp div add
  1682.       Array horz wd 2 mul add get
  1683.             vert wd add 2 index put   pop
  1684.  
  1685.       3 index 3 index add 2 div
  1686.             rand 50 mod 25 sub height div 2 depth exp div add
  1687.       Array horz wd add get
  1688.             vert wd 2 mul add 2 index put   pop
  1689.  
  1690.       horz 0 eq
  1691.       { 2 index 1 index add 2 div
  1692.             rand 50 mod 25 sub height div 2 depth exp div add
  1693.       Array horz get
  1694.             vert wd add 2 index put    pop
  1695.       } if
  1696.  
  1697.       vert 0 eq
  1698.       { 1 index 1 index add 2 div
  1699.             rand 50 mod 25 sub height div 2 depth exp div add
  1700.       Array horz wd add get
  1701.             vert 2 index put          pop
  1702.       } if
  1703.  
  1704.       pop pop pop pop
  1705.       .5 .5 translate
  1706.       .5 .5 scale
  1707.       Square
  1708.       2 2 scale
  1709.  
  1710.       /horz horz 2 maxdepth depth sub 1 sub exp cvi add def
  1711.       -.5 0 translate
  1712.       .5 .5 scale
  1713.       Square
  1714.       2 2 scale
  1715.       /horz horz 2 maxdepth depth sub 1 sub exp cvi sub def
  1716.  
  1717.       /vert vert 2 maxdepth depth sub 1 sub exp cvi add def
  1718.       .5 -.5 translate
  1719.       .5 .5 scale
  1720.       Square
  1721.       2 2 scale
  1722.       /vert vert 2 maxdepth depth sub 1 sub exp cvi sub def
  1723.  
  1724.       /horz horz 2 maxdepth depth sub 1 sub exp cvi add def
  1725.       /vert vert 2 maxdepth depth sub 1 sub exp cvi add def
  1726.       -.5 0 translate
  1727.       .5 .5 scale
  1728.       Square
  1729.       2 2 scale
  1730.       /horz horz 2 maxdepth depth sub 1 sub exp cvi sub def
  1731.       /vert vert 2 maxdepth depth sub 1 sub exp cvi sub def
  1732.  
  1733.       } ifelse
  1734.       /depth depth 1 sub def
  1735.  
  1736.    } def
  1737.  
  1738.    /dx Bburx Bbllx sub def
  1739.    /dy Bbury Bblly sub def
  1740.    /hyp dx dup mul dy dup mul add sqrt def
  1741.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1742.    hyp 1.2 mul dup scale
  1743.    45 rotate
  1744.    -.5 -.5 translate
  1745.  
  1746.    currentscreen
  1747.    3 -1 roll
  1748.    pop 120
  1749.    3 1 roll
  1750.    setscreen
  1751.  
  1752.    0 0 0 0
  1753.    Square
  1754.    4{ pop }repeat
  1755.  
  1756.    } bind def
  1757.  
  1758. %@Fill
  1759. /Leaves %Leaves,5, Numberá(sqáinch):=50, Maximumágray:=100, Minimumágray:=0, Maximumásize:=100, Minimumásize:=10
  1760.    {
  1761.    /MinSize exch 1 200 InRange def
  1762.    /MaxSize exch MinSize 200 InRange MinSize wDstChck def
  1763.    /MinGrey exch 0 100 InRange def
  1764.    /MaxGrey exch MinGrey 100 InRange def
  1765.    /Number exch 1 250 InRange def
  1766.  
  1767.    eoclip newpath
  1768.    currentscreen
  1769.    3 -1 roll
  1770.    pop 90
  1771.    3 1 roll
  1772.    setscreen
  1773.  
  1774.    /dx Bburx Bbllx sub def
  1775.    /dy Bbury Bblly sub def
  1776.  
  1777.    dx dy mul Number mul 1000000 div cvi
  1778.       {
  1779.       matrix currentmatrix
  1780.  
  1781.       rand dx mod Bbllx add
  1782.       rand dy mod Bblly add
  1783.       translate
  1784.  
  1785.       rand 360 mod
  1786.       rotate
  1787.  
  1788.       MaxSize MinSize eq
  1789.         { Maxsize 10.8 div }
  1790.         { rand MaxSize MinSize sub mod MinSize add 10.8 div } ifelse
  1791.       dup scale
  1792.  
  1793.       17 0 moveto
  1794.       65 -18 106 -13 125 0 curveto
  1795.       106 13  65  18  17 0 curveto
  1796.       gsave
  1797.       MaxGrey MinGrey eq
  1798.         { MaxGrey 100 div }
  1799.         { rand MaxGrey MinGrey sub mod MinGrey add 100 div } ifelse
  1800.       setgray
  1801.       fill
  1802.       grestore
  1803.       0.3 setlinewidth
  1804.       0 setgray
  1805.       stroke
  1806.  
  1807.       setmatrix
  1808.  
  1809.       } repeat
  1810.  
  1811.    } bind def
  1812.  
  1813. %@Fill
  1814. /Mesh %Mesh,5, Frequency:=6, Squareásizeá(%):=80, Shadowáloweráleft:=3, Shadowáupperáright:=15, Foregroundágray:=100
  1815.    {
  1816.    /ForegroundGray exch 0 100 InRange def
  1817.    /Shadow2 exch 0 100 InRange def
  1818.    /Shadow1 exch 0 100 InRange def
  1819.    /SquareSize exch 1 100 InRange def
  1820.    /Frequency exch 1 25 InRange def
  1821.  
  1822.    /newfont 10 dict def
  1823.    newfont begin
  1824.  
  1825.    /FontMatrix [1         0
  1826.                 0         1
  1827.                 0         0] def
  1828.    /FontType 3 def
  1829.    /FontBBox [0 0 1 1] def
  1830.    /Encoding 256 array def
  1831.    0 1 255 {Encoding exch /.notdef put} for
  1832.  
  1833.    /BuildChar
  1834.      { 1  0
  1835.        -0.1 -0.1 1.1 1.1
  1836.        setcachedevice
  1837.        pop begin
  1838.  
  1839.        0 setlinejoin
  1840.  
  1841.        SquareSize 100 div dup scale
  1842.        0 0 moveto
  1843.        1 0 lineto
  1844.        1 1 lineto
  1845.        0 1 lineto
  1846.        closepath
  1847.  
  1848.        Shadow1 100 div
  1849.        1 Shadow2 100 div sub
  1850.        1 index dup moveto
  1851.        1 index 1 index lineto
  1852.        dup dup lineto
  1853.        dup 2 index lineto
  1854.        closepath
  1855.        2{pop}repeat
  1856.        fill
  1857.  
  1858.        end
  1859.      } def
  1860.    end
  1861.  
  1862.    /pntsize 1000 Frequency div def
  1863.  
  1864.    /FillFont newfont definefont pop
  1865.    /FillFont findfont pntsize scalefont setfont
  1866.  
  1867.    eoclip newpath
  1868.  
  1869.    ForegroundGray 100 div 1 exch sub setgray
  1870.  
  1871.    Bblly pntsize Bbury
  1872.      { Bbllx exch moveto
  1873.        { (a) show
  1874.          currentpoint
  1875.          pop Bburx gt
  1876.          {exit} if
  1877.        } loop
  1878.      } for
  1879.    } bind def
  1880.  
  1881. %@Fill
  1882. /Motifs %Motifs,4, Motif:=1, Frequency:=2, Spacingá(%):=100, Foregroundágray:=100
  1883.    {
  1884.    /ForegroundGray exch 0 100 InRange def
  1885.    /Spacing exch 1 300 InRange def
  1886.    /Frequency exch 1 25 InRange def
  1887.    /Character exch 1 8 InRange def
  1888.  
  1889.    /str 1 string def
  1890.    str 0 Character put
  1891.  
  1892.    /newfont 10 dict def
  1893.    newfont begin
  1894.  
  1895.    /FontMatrix [.001                0
  1896.                 0                   .001
  1897.                 0                   0] def
  1898.    /FontType 3 def
  1899.    /FontBBox [0 0 500 1000] def
  1900.  
  1901.    /Encoding 256 array def
  1902.    0 1 255 {Encoding exch /.notdef put} for
  1903.    Encoding  1 /CanadianFlag put
  1904.    Encoding  2 /Corels put
  1905.    Encoding  3 /Globe put
  1906.    Encoding  4 /CubeSolid put
  1907.    Encoding  5 /CubeFrame put
  1908.    Encoding  6 /Balls put
  1909.    Encoding  7 /Checkerboard put
  1910.    Encoding  8 /CCCTlogo put
  1911.  
  1912.    /CharProcs 9 dict def
  1913.    CharProcs begin
  1914.    /.notdef {} def
  1915.    /CanadianFlag
  1916.      { 9.6 9.6 scale
  1917.        9 -30 translate
  1918.  
  1919.        -9 60 moveto
  1920.        -9 30 lineto
  1921.        -1 30 lineto
  1922.        -1 60 lineto
  1923.        closepath
  1924.  
  1925.        43 60 moveto
  1926.        43 30 lineto
  1927.        35 30 lineto
  1928.        35 60 lineto
  1929.        closepath
  1930.  
  1931.        17 58 moveto
  1932.        15 54 lineto
  1933.        12 55 lineto
  1934.        14 47 lineto
  1935.        10 51 lineto
  1936.        10 49 lineto
  1937.        05 50 lineto
  1938.        07 45 lineto
  1939.        05 45 lineto
  1940.        12 39 lineto
  1941.        10 37 lineto
  1942.        16.5 38 lineto
  1943.        16.5 32 lineto
  1944.        17.5 32 lineto
  1945.        17.5 38 lineto
  1946.        24 37 lineto
  1947.        22 39 lineto
  1948.        29 45 lineto
  1949.        27 45 lineto
  1950.        29 50 lineto
  1951.        24 49 lineto
  1952.        24 51 lineto
  1953.        20 47 lineto
  1954.        22 55 lineto
  1955.        19 54 lineto
  1956.        closepath
  1957.  
  1958. %       0.3 setlinewidth
  1959. %       stroke
  1960.        fill
  1961.        } def
  1962.    /Corels
  1963.        { 250 250 translate
  1964.        113 113 scale
  1965.  
  1966.        7 { 45 rotate
  1967.          gsave
  1968.          1 2 sqrt div 1 add 0 translate
  1969.          .5 .5 moveto
  1970.          -.5 .5 lineto
  1971.          -.5 -.5 lineto
  1972.          .5 -.5 lineto
  1973.          closepath
  1974.          fill
  1975.          grestore
  1976.          } repeat
  1977.        } def
  1978.    /Globe
  1979.        {
  1980.        250 250 translate
  1981.        250 250 scale
  1982.        0 1 4
  1983.           { matrix currentmatrix exch
  1984.           22.5 mul sin
  1985.           1 scale
  1986.           0 0 1 90 450 arc
  1987.           setmatrix
  1988.           } for
  1989.  
  1990.        -3 1 3
  1991.           { 22.5 mul sin
  1992.           dup
  1993.           dup mul 1 sub neg sqrt
  1994.           dup neg 2 index moveto
  1995.           exch lineto
  1996.           } for
  1997.  
  1998.        .01 setlinewidth
  1999.        stroke
  2000.        } def
  2001.    /CubeSolid
  2002.        {
  2003.        250 250 translate
  2004.        145 145 scale
  2005.        /Rotm
  2006.           { 30 matrix rotate transform
  2007.           exch 3 1 roll
  2008.           30 matrix rotate transform
  2009.           pop exch
  2010.           moveto
  2011.           } bind def
  2012.        /Rotl
  2013.           { 30 matrix rotate transform
  2014.           exch 3 1 roll
  2015.           30 matrix rotate transform
  2016.           pop exch
  2017.           lineto
  2018.           } bind def
  2019.  
  2020.         1  1  1 Rotm
  2021.        -1  1  1 Rotl
  2022.        -1 -1  1 Rotl
  2023.         1 -1  1 Rotl
  2024.        closepath
  2025.  
  2026.        -1  1  1 Rotm
  2027.        -1  1 -1 Rotl
  2028.         1  1 -1 Rotl
  2029.         1 -1 -1 Rotl
  2030.         1 -1  1 Rotl
  2031.  
  2032.         1  1  1 Rotm
  2033.         1  1 -1 Rotl
  2034.  
  2035.        .01 setlinewidth
  2036.        stroke
  2037.        } def
  2038.    /CubeFrame
  2039.        {
  2040.        250 250 translate
  2041.        145 145 scale
  2042.        /Rotm
  2043.           { 30 matrix rotate transform
  2044.           exch 3 1 roll
  2045.           30 matrix rotate transform
  2046.           pop exch
  2047.           moveto
  2048.           } bind def
  2049.        /Rotl
  2050.           { 30 matrix rotate transform
  2051.           exch 3 1 roll
  2052.           30 matrix rotate transform
  2053.           pop exch
  2054.           lineto
  2055.           } bind def
  2056.  
  2057.         1  1  1 Rotm
  2058.        -1  1  1 Rotl
  2059.        -1 -1  1 Rotl
  2060.         1 -1  1 Rotl
  2061.        closepath
  2062.  
  2063.         1  1 -1 Rotm
  2064.        -1  1 -1 Rotl
  2065.        -1 -1 -1 Rotl
  2066.         1 -1 -1 Rotl
  2067.        closepath
  2068.  
  2069.         1  1  1 Rotm
  2070.         1  1 -1 Rotl
  2071.        -1  1  1 Rotm
  2072.        -1  1 -1 Rotl
  2073.        -1 -1  1 Rotm
  2074.        -1 -1 -1 Rotl
  2075.         1 -1  1 Rotm
  2076.         1 -1 -1 Rotl
  2077.  
  2078.        .01 setlinewidth
  2079.        stroke
  2080.        } def
  2081.    /Balls
  2082.        { 250 250 translate
  2083.        225 225 scale
  2084.  
  2085.        0 0 1.1 0 360 arc
  2086.        -0.32  0.55 translate
  2087.        30 rotate
  2088.        1 2 div  1 3 div scale
  2089.        0 0 1.1 360 0 arcn
  2090.        fill
  2091.        } def
  2092.    /Checkerboard
  2093.        { 0 0 moveto
  2094.        500 0 lineto
  2095.        500 500 lineto
  2096.        0 500 lineto
  2097.        closepath
  2098.        fill
  2099.        } def
  2100.    /CCCTlogo
  2101.        {
  2102.        4.8 4.8 scale
  2103.        -21 -26 translate
  2104.  
  2105.        36.4 28.4 moveto
  2106.        70 38 35 196 176.7 arcn
  2107.        35.1 40 35 42 24 41 curveto
  2108.        21 37 24 38 22 32 curveto
  2109.        21 28 25 27 28 28 curveto
  2110.        33 26 32 30 36.4 28.4 curveto
  2111.  
  2112.        36.5 48.2 moveto
  2113.        70 38 35 163.1 144.5 arcn
  2114.        40 59 39 60 36 61 curveto
  2115.        33 63 29 62 27 61 curveto
  2116.        24 58 29 55 26 54 curveto
  2117.        24 53 25 50 25 50 curveto
  2118.        28 47 30 44 36.5 48.2 curveto
  2119.  
  2120.        44.3 61.7 moveto
  2121.        70 38 35 137.3 111.5 arcn
  2122.        56 81 52 75 53 81 curveto
  2123.        52 87 50 81 46 84 curveto
  2124.        37 84 40 80 40 76 curveto
  2125.        42 70 35 73 44.3 61.7 curveto
  2126.  
  2127.        60.8 71.8 moveto
  2128.        70 38 35 105.3 80.0 arcn
  2129.        78 72 78 76 77 80 curveto
  2130.        77 81 80 82 79 83 curveto
  2131.        77 85 74 84 70 85 curveto
  2132.        65 85 69 80 62 80 curveto
  2133.        59 77 61 74 60.8 71.8 curveto
  2134.  
  2135.        97.1 60.1 moveto
  2136.        70 38 35 39.2 66.4 arc
  2137.        81 74 82 78 85 81 curveto
  2138.        91 81 98 84 95 76 curveto
  2139.        98 74 115 77 103 72 curveto
  2140.        101 68 100 61 97.1 60.1 curveto
  2141.  
  2142.        100 56 moveto
  2143.        70 38 35 31 11.6 arcn
  2144.        113 42 114 49 118 50 curveto
  2145.        115 57 123 56 120 60 curveto
  2146.        115 60 116 64 109 63 curveto
  2147.        104 62 107 57 100 56 curveto
  2148.  
  2149.        105 39 moveto
  2150.        70 38 35 1.6 -14.8 arcn
  2151.        107 27 110 28 112 27 curveto
  2152.        115 27 111 31 118 32 curveto
  2153.        120 33 125 33 122 36 curveto
  2154.        121 37 119 38 117 39 curveto
  2155.        113 46 112 39 105 39 curveto
  2156.  
  2157.        fill
  2158.     } def
  2159.    end
  2160.  
  2161.    /BuildChar
  2162.      {Spacing 100 div 500 mul  dup
  2163.       -0.1 -0.1 500.1 1000.1
  2164.       setcachedevice
  2165.       exch begin
  2166.       Encoding exch get
  2167.       CharProcs exch get
  2168.       end
  2169.       exec
  2170.      }def
  2171.    end
  2172.  
  2173.    /pntsize 100000 Frequency div Spacing div def
  2174.  
  2175.    /FillFont newfont definefont pop
  2176.    /FillFont findfont pntsize scalefont setfont
  2177.  
  2178.    /increment Spacing 100 div pntsize mul def
  2179.    /ury Bbury increment add def
  2180.  
  2181.    eoclip newpath
  2182.    ForegroundGray 100 div 1 exch sub setgray
  2183.    Bblly increment ury
  2184.      { Bbllx 1 index moveto
  2185.        { str show
  2186.          currentpoint
  2187.          dup 3 index sub
  2188.          increment 2.1 div gt { increment sub } if
  2189.          1 index Bburx gt
  2190.          {pop pop pop exit} if
  2191.          moveto
  2192.        } loop
  2193.      } for
  2194.    } bind def
  2195.  
  2196. %@Fill
  2197. /Octagons %Octagons,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  2198.    {
  2199.    /BackgroundGray exch -1 100 InRange def
  2200.    /ForegroundGray exch 0 100 InRange def
  2201.    /Linewidth      exch 0 100 InRange def
  2202.    /Frequency      exch 2 100 InRange def
  2203.  
  2204.    /newfont 10 dict def
  2205.    newfont begin
  2206.  
  2207.    /FontMatrix [1 2 sqrt 1 add div  0
  2208.                 0                   1 2 sqrt 1 add div
  2209.                 0                   0] def
  2210.    /FontType 3 def
  2211.    /FontBBox [0 0 2 sqrt 1 add 2 sqrt 1 add] def
  2212.    /Encoding 256 array def
  2213.    0 1 255 {Encoding exch /.notdef put} for
  2214.  
  2215.    /BuildChar
  2216.      { 2 sqrt 1 add  0
  2217.        -0.5 -0.5 2 sqrt 1.5 add 2 sqrt 1.5 add
  2218.        setcachedevice
  2219.        pop begin
  2220.  
  2221.        1 2 sqrt div  0 moveto
  2222.        1 2 sqrt div 1 add  0 lineto
  2223.        2 sqrt 1 add  1 2 sqrt div lineto
  2224.        2 sqrt 1 add  1 2 sqrt div 1 add lineto
  2225.        1 2 sqrt div 1 add  2 sqrt 1 add lineto
  2226.        1 2 sqrt div  2 sqrt 1 add lineto
  2227.        0  1 2 sqrt div 1 add lineto
  2228.        0  1 2 sqrt div lineto
  2229.        closepath
  2230.  
  2231.        Linewidth pntsize div 2 sqrt 1 add mul setlinewidth
  2232.        stroke
  2233.  
  2234.       end
  2235.      } def
  2236.    end
  2237.  
  2238.    /pntsize 1000 Frequency div def
  2239.    /FillFont newfont definefont pop
  2240.    /FillFont findfont pntsize scalefont setfont
  2241.  
  2242.    eoclip
  2243.    BackgroundGray 0 ge
  2244.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2245.       { newpath } ifelse
  2246.  
  2247.    ForegroundGray 100 div 1 exch sub setgray
  2248.  
  2249.    Bblly pntsize Bbury
  2250.      { Bbllx pntsize Bburx
  2251.        { 1 index moveto
  2252.        (a) show
  2253.        } for
  2254.      pop
  2255.      } for
  2256.    } bind def
  2257.  
  2258. %@Fill
  2259. /Patio %Patio,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  2260.    {
  2261.    /BackgroundGray exch -1 100 InRange def
  2262.    /ForegroundGray exch 0 100 InRange def
  2263.    /Linewidth      exch 0 100 InRange def
  2264.    /Frequency      exch 2 100 InRange def
  2265.  
  2266.    /newfont 10 dict def
  2267.    newfont begin
  2268.  
  2269.    /FontMatrix [2 7 div             0
  2270.                 0                   2 7 div
  2271.                 0                   0] def
  2272.    /FontType 3 def
  2273.    /FontBBox [0 0 3 sqrt 2 mul  7 2 div] def
  2274.    /Encoding 256 array def
  2275.    0 1 255 {Encoding exch /.notdef put} for
  2276.  
  2277.    /BuildChar
  2278.      { 3 sqrt 3 mul 2 div  3 2 div
  2279.        -0.5 -0.5 3 sqrt 2 mul 0.5 add 7 2 div 0.5 add
  2280.        setcachedevice
  2281.        pop begin
  2282.  
  2283.        3 sqrt  3 2 div  translate
  2284.        3 sqrt 2 div  1 2 div  moveto
  2285.        3 { 120 rotate
  2286.            3 sqrt 2 div  -3 2 div lineto
  2287.            3 sqrt  -1 lineto
  2288.            3 sqrt  0 lineto
  2289.            3 sqrt 2 div  1 2 div lineto
  2290.          } repeat
  2291.  
  2292.        Linewidth pntsize div 7 2 div mul setlinewidth
  2293.        stroke
  2294.  
  2295.        end
  2296.      } def
  2297.    end
  2298.  
  2299.    /pntsize 1250 Frequency div def
  2300.  
  2301.    /FillFont newfont definefont pop
  2302.    /FillFont findfont pntsize scalefont setfont
  2303.  
  2304.    /Pointsize pntsize 6 mul 7 div def
  2305.  
  2306.    eoclip
  2307.    BackgroundGray 0 ge
  2308.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2309.       { newpath } ifelse
  2310.  
  2311.    ForegroundGray 100 div 1 exch sub setgray
  2312.  
  2313.    Bblly Pointsize Bbury
  2314.      { Bbllx 1 index moveto
  2315.        { (a) show
  2316.          currentpoint
  2317.          dup 3 index sub
  2318.          Pointsize 2 div gt { Pointsize sub } if
  2319.          1 index Bburx gt
  2320.          {pop pop pop exit} if
  2321.          moveto
  2322.        } loop
  2323.      } for
  2324.    } bind def
  2325.  
  2326. %@Fill
  2327. /Rectangles %Rectangles,5, Area:=100, Number:=50, Lineáwidth:=5, Gray:=0, Randomáseed:=0
  2328.    {
  2329.    srand
  2330.    /Grey exch 0 100 InRange def
  2331.    /Linewidth exch 0 100 InRange def
  2332.    /Number exch 1 200 InRange def
  2333.    /area exch 10 300 InRange def
  2334.  
  2335.    /dx Bburx Bbllx sub 2 mul def
  2336.    /dy Bbury Bblly sub 2 mul def
  2337.    /Area area 10000 mul def
  2338.  
  2339.    eoclip newpath
  2340.  
  2341.    Linewidth setlinewidth
  2342.    Bbllx dx 2 div sub  Bblly dy 2 div sub  translate
  2343.  
  2344. %   Area log
  2345.    Number {
  2346.       rand dx mod rand dy mod moveto
  2347. %      rand 180 mod 90 sub 100 div dup  dup mul 1 exch sub sqrt
  2348. %      exch atan 180 div 1 index mul 10 exch exp
  2349.       rand Area mod rand Area mod mul sqrt sqrt
  2350.       dup 0 rlineto
  2351.       0 Area 2 index div rlineto
  2352.       dup neg 0 rlineto
  2353.       closepath
  2354.       pop
  2355.  
  2356.       gsave
  2357.       Grey 100 div 1 exch sub setgray
  2358.       fill
  2359.       grestore
  2360.       0 setgray
  2361.       stroke
  2362.       } repeat
  2363.  
  2364.    } bind def
  2365.  
  2366. %@Fill
  2367. /Reptiles %Reptiles,5, Frequency:=4, Grayá1:=60, Grayá2:=30, Grayá3:=0, Lineáwidth:=8
  2368. {
  2369.   /LineWidth exch 0 250 InRange def
  2370.   /Gray3 exch 0 100 InRange 100 div def
  2371.   /Gray2 exch -1 100 InRange 100 div def
  2372.   /Gray1 exch -1 100 InRange 100 div def
  2373.   /Frequency exch 1 100 InRange def
  2374.  
  2375.   /newfont 10 dict def
  2376.   newfont begin
  2377.  
  2378.   /FontMatrix [2 7 div             0
  2379.                0                   2 7 div
  2380.                0                   0] def
  2381.   /FontType 3 def
  2382.   /FontBBox [-1.73 -1.86 2.36 2.0] def
  2383.   /Encoding 256 array def
  2384.   0 1 255 {Encoding exch /.notdef put} for
  2385.   Encoding 97 /ReptilesStroked put
  2386.   Encoding 98 /ReptileFilled put
  2387.  
  2388.   /CharProcs 3 dict def
  2389.   CharProcs begin
  2390.   /.notdef {} def
  2391.   /ReptilesStroked
  2392.   {
  2393.     %3 sqrt  3 2 div  translate
  2394.  
  2395.     3 sqrt 2 div  1 2 div  moveto
  2396.     3
  2397.     {
  2398.       120 rotate
  2399.  
  2400.       0     0    moveto
  2401.       0.32 -0.40 lineto
  2402.       0.32 -0.48 lineto
  2403.       0    -0.72 lineto
  2404.  
  2405.       0.05 -1.03 moveto
  2406.       0.4  -0.76 lineto
  2407.       0.84 -0.84 lineto
  2408.       0.5  -0.96 lineto
  2409.       0.31 -1.18 lineto
  2410.  
  2411.       0.87 -1.5  moveto
  2412.       0.58 -1.28 lineto
  2413.       0.8  -1.14 lineto
  2414.       0.94 -1.18 lineto
  2415.       1.24 -1.08 lineto
  2416.       1.42 -1.18 lineto
  2417.  
  2418.       1.68 -1.02 moveto
  2419.       1.52 -0.84 lineto
  2420.       1.64 -0.66 lineto
  2421.       1.73 -0.36 lineto
  2422.  
  2423.       1.73  0    moveto
  2424.       1.41 -0.26 lineto
  2425.       1.32 -0.49 lineto
  2426.       1.06 -0.24 lineto
  2427.       1.42  0.18 lineto
  2428.  
  2429.       0.87  0.57 moveto
  2430.       0.87  0.26 lineto
  2431.       0.99  0.26 lineto
  2432.       1.05  0.12 lineto
  2433.       0.82 -0.07 lineto
  2434.       0.68 -0.07 lineto
  2435.       0.62  0.36 lineto
  2436.  
  2437.  
  2438.       3 sqrt 2 div  1 2 div moveto
  2439.  
  2440.     } repeat
  2441.  
  2442.     LineWidth Pointsize div 7 2 div mul setlinewidth
  2443.     stroke
  2444.  
  2445.   } def
  2446.   /ReptileFilled
  2447.   {
  2448.     0     0    moveto
  2449.     0.32 -0.40 lineto
  2450.     0.32 -0.48 lineto
  2451.     0    -0.72 lineto
  2452.  
  2453.    -0.40 -0.55 lineto
  2454.    -0.47 -0.68 lineto
  2455.    -0.42 -0.97 lineto
  2456.    -0.27 -0.99 lineto
  2457.    -0.21 -0.88 lineto
  2458.  
  2459.     0.05 -1.03 lineto
  2460.     0.4  -0.76 lineto
  2461.     0.84 -0.84 lineto
  2462.     0.5  -0.96 lineto
  2463.     0.31 -1.18 lineto
  2464.  
  2465.     0.32 -1.39 lineto
  2466.     0.55 -1.60 lineto
  2467.     0.59 -1.74 lineto
  2468.     0.82 -1.86 lineto
  2469.  
  2470.     0.87 -1.5  lineto
  2471.     0.58 -1.28 lineto
  2472.     0.8  -1.14 lineto
  2473.     0.94 -1.18 lineto
  2474.     1.24 -1.08 lineto
  2475.     1.42 -1.18 lineto
  2476.     1.52 -1.45 lineto
  2477.     1.45 -1.81 lineto
  2478.     1.74 -1.47 lineto
  2479.     1.68 -1.02 lineto
  2480.     1.52 -0.84 lineto
  2481.     1.64 -0.66 lineto
  2482.     1.73 -0.36 lineto
  2483.     2.28 -0.46 lineto
  2484.     2.36 -0.11 lineto
  2485.     2.12 -0.15 lineto
  2486.     1.73  0    lineto
  2487.     1.41 -0.26 lineto
  2488.     1.32 -0.49 lineto
  2489.     1.06 -0.24 lineto
  2490.     1.42  0.18 lineto
  2491.     1.21  0.41 lineto
  2492.     1.11  0.60 lineto
  2493.  
  2494.     0.87  0.57 lineto
  2495.     0.87  0.26 lineto
  2496.     0.99  0.26 lineto
  2497.     1.05  0.12 lineto
  2498.     0.82 -0.07 lineto
  2499.     0.68 -0.07 lineto
  2500.     0.62  0.36 lineto
  2501.     0.26  0.52 lineto
  2502.     0.19  0.48 lineto
  2503.     closepath
  2504.     fill
  2505.   } def
  2506.   end
  2507.  
  2508.   /BuildChar
  2509.   {
  2510.     3 sqrt 3 mul 2 div  3 2 div
  2511.     -1.83 -1.96 2.46 2.1
  2512.     setcachedevice
  2513.     exch begin
  2514.     Encoding exch get
  2515.     CharProcs exch get
  2516.     end
  2517.     exec
  2518.   } def
  2519.   end
  2520.  
  2521.   /Pointsize 2000 Frequency div def
  2522.  
  2523.   /FillFont newfont definefont pop
  2524.   /FillFont findfont Pointsize scalefont setfont
  2525.  
  2526.   /pntsize Pointsize 6 mul 7 div def
  2527.   /HeightDiff Pointsize 2 mul 7 div .49 mul def
  2528.  
  2529.   eoclip newpath
  2530.  
  2531.   currentscreen
  2532.   3 -1 roll
  2533.   pop 120
  2534.   3 1 roll
  2535.   setscreen
  2536.  
  2537.   Bblly pntsize Bbury pntsize add HeightDiff add
  2538.   {
  2539.     Bbllx 1 index moveto
  2540.     {
  2541.       currentpoint
  2542.       1 index exch
  2543.  
  2544.       2 copy 2 copy translate
  2545.       240 rotate
  2546.       Gray1 0 ge
  2547.       { Gray1 1 exch sub setgray
  2548.         (b) show
  2549.       } if
  2550.       0 0 moveto
  2551.       -240 rotate
  2552.       neg exch neg exch translate
  2553.  
  2554.       2 copy translate
  2555.       120 rotate
  2556.       Gray2 0 ge
  2557.       { Gray2 1 exch sub setgray
  2558.         (b) show
  2559.       } if
  2560.       0 0 moveto
  2561.       -120 rotate
  2562.       neg exch neg exch translate
  2563.  
  2564.       Gray3 1 exch sub setgray
  2565.       (b) show
  2566.  
  2567.       currentpoint
  2568.       dup 4 index sub
  2569.       pntsize 2.1 div gt { pntsize sub } if
  2570.       3 -1 roll Bburx gt
  2571.       {pop pop pop exit} if
  2572.       moveto
  2573.     } loop
  2574.   } for
  2575.  
  2576.   LineWidth 0 gt
  2577.   {
  2578.     0 setgray
  2579.     Bblly pntsize Bbury pntsize add
  2580.     {
  2581.       Bbllx 1 index moveto
  2582.       {
  2583.         (a) show
  2584.         currentpoint
  2585.         dup 3 index sub
  2586.         pntsize 2.1 div gt { pntsize sub } if
  2587.         1 index Bburx gt
  2588.         {pop pop pop exit} if
  2589.         moveto
  2590.       } loop
  2591.     } for
  2592.   } if
  2593. } bind def
  2594.  
  2595. %@Fill
  2596. /SpiderWeb %SpiderWeb,5, Lineáwidth:=5, Separation:=300, Maximumáangle:=40, Minimumáangle:=10, Randomáseed:=0
  2597.    { srand
  2598.    /MinAng exch 2 90 InRange def
  2599.    /MaxAng exch MinAng 90 InRange MinAng wDstChck def
  2600.    /Sep exch 10 500 InRange def
  2601.    /Linewidth exch 0 100 InRange def
  2602.  
  2603.    eoclip
  2604.    newpath
  2605.  
  2606.    /dx Bburx Bbllx sub def
  2607.    /dy Bbury Bblly sub def
  2608.    /hyp dx dup mul dy dup mul add sqrt def
  2609.    /DifAng MaxAng MinAng sub def
  2610.  
  2611.    Bbllx Bblly translate
  2612.    dx 2 div dy 2 div translate
  2613.  
  2614.    /theta 0 def
  2615.    /dtheta 0 def
  2616.  
  2617.    {  0 0 moveto
  2618.  
  2619.       /theta theta dtheta add def
  2620.       theta 360 ge
  2621.         { exit } if
  2622.       /dtheta rand DifAng mod MinAng add def
  2623.       theta dtheta add 350 gt
  2624.         { /dtheta 360 theta sub def } if
  2625.  
  2626.       hyp theta cos mul hyp theta sin mul lineto
  2627.  
  2628.       0 Sep hyp
  2629.          {
  2630.          dup theta cos mul
  2631.          1 index theta sin mul
  2632.          moveto
  2633.  
  2634.          dup theta dtheta add cos theta cos add mul
  2635.          1 index theta dtheta add sin theta sin add mul
  2636.          2 index
  2637.          theta 180 add dtheta add
  2638.          theta 180 add
  2639.          arcn
  2640.  
  2641.          pop
  2642.          } for
  2643.       Linewidth setlinewidth
  2644.       stroke
  2645.       } loop
  2646.    } bind def
  2647.  
  2648. %@Fill
  2649. /Spirals %Spirals,4, Size:=150, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  2650.    {
  2651.    /BackgroundGrey exch -1 100 InRange def
  2652.    /ForegroundGray exch 0 100 InRange def
  2653.    /Linewidth exch 0 100 InRange def
  2654.    /Size exch 10 500 InRange def
  2655.  
  2656.    eoclip
  2657.    BackgroundGrey 0 ge
  2658.       { BackgroundGrey 100 div 1 exch sub setgray fill }
  2659.       { newpath } ifelse
  2660.  
  2661.    /cx Bburx Bbllx add 2 div def
  2662.    /cy Bbury Bblly add 2 div def
  2663.    /pntsize2 Size 2 div def
  2664.    /cy2 cy pntsize2 add def
  2665.    /hyp Bburx Bbllx sub dup mul
  2666.         Bbury Bblly sub dup mul
  2667.         add sqrt 2 div def
  2668.  
  2669.    ForegroundGray 100 div 1 exch sub setgray
  2670.  
  2671.    Linewidth setlinewidth
  2672.    0 Size hyp
  2673.       { cx cy 2 index 90 270 arc
  2674.         cx cy2 2 index pntsize2 add -90 90 arc
  2675.         pop
  2676.       } for
  2677.    stroke
  2678.    } bind def
  2679.  
  2680. %@Fill
  2681. /Spokes %Spokes,5, Number:=120, Lineáwidth:=5, Horizontal:=0, Vertical:=0, Foregroundágray:=100
  2682.         { %def -- Fill function that fills with spokes
  2683.         /ForegroundGray exch 0 100 InRange def
  2684.     /wY exch 0 100 InRange def
  2685.     /wX exch 0 100 InRange def
  2686.     /LineWidth exch 0 100 InRange def
  2687.     /Number exch 4 360 InRange def
  2688.  
  2689.         eoclip
  2690.         newpath
  2691.         /Flen Bburx Bbllx sub dup mul Bbury Bblly sub dup mul add sqrt def
  2692.         Bbllx Bblly translate
  2693.     Bburx Bbllx sub wX mul 100 div  Bbury Bblly sub wY mul 100 div translate
  2694.  
  2695.     360 Number div
  2696.         Number {
  2697.            0 0 moveto
  2698.            Flen 0 lineto
  2699.            dup rotate
  2700.            } repeat
  2701.         pop
  2702.         ForegroundGray 100 div 1 exch sub setgray
  2703.     LineWidth setlinewidth
  2704.     stroke
  2705.         } bind def
  2706.  
  2707. %@Fill
  2708. /Squares %Squares,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  2709.    {
  2710.    /BackgroundGray exch -1 100 InRange def
  2711.    /ForegroundGray exch 0 100 InRange def
  2712.    /Linewidth      exch 0 100 InRange def
  2713.    /Frequency      exch 2 100 InRange def
  2714.  
  2715.    /newfont 10 dict def
  2716.    newfont begin
  2717.  
  2718.    /FontMatrix [1  0  0
  2719.                 1  0  0] def
  2720.    /FontType 3 def
  2721.    /FontBBox [0 0 1 1] def
  2722.    /Encoding 256 array def
  2723.    0 1 255 {Encoding exch /.notdef put} for
  2724.  
  2725.    /BuildChar
  2726.      { 1  0
  2727.        -0.1 -0.1 1.1 1.1
  2728.        setcachedevice
  2729.        pop begin
  2730.  
  2731.        0 0 moveto
  2732.        0 1 lineto
  2733.        1 1 lineto
  2734.        1 0 lineto
  2735.  
  2736.        Linewidth pntsize div setlinewidth
  2737.        stroke
  2738.  
  2739.       end
  2740.      } def
  2741.    end
  2742.  
  2743.    /pntsize 1000 Frequency div def
  2744.  
  2745.    /FillFont newfont definefont pop
  2746.    /FillFont findfont pntsize scalefont setfont
  2747.  
  2748.    eoclip
  2749.    BackgroundGray 0 ge
  2750.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2751.       { newpath } ifelse
  2752.  
  2753.    ForegroundGray 100 div 1 exch sub setgray
  2754.  
  2755.    Bblly pntsize Bbury
  2756.      { Bbllx exch moveto
  2757.        { (a) show
  2758.          currentpoint
  2759.          pop Bburx gt
  2760.          {exit} if
  2761.        } loop
  2762.      } for
  2763.    } bind def
  2764.  
  2765. %@Fill
  2766. /StarOfDavid %StarOfDavid,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  2767.    {
  2768.    /BackgroundGray exch -1 100 InRange def
  2769.    /ForegroundGray exch 0 100 InRange def
  2770.    /Linewidth      exch 0 100 InRange def
  2771.    /Frequency      exch 2 100 InRange def
  2772.  
  2773.    /newfont 10 dict def
  2774.    newfont begin
  2775.  
  2776.    /FontMatrix [1 3 sqrt 2 mul div  0
  2777.                 0                   1 3 sqrt 2 mul div
  2778.                 0                   0] def
  2779.    /FontType 3 def
  2780.    /FontBBox [0 0 2 3 sqrt 2 mul] def
  2781.    /Encoding 256 array def
  2782.    0 1 255 {Encoding exch /.notdef put} for
  2783.  
  2784.    /BuildChar
  2785.      { 1  3 sqrt
  2786.        -0.1 -0.1 2.1 3 sqrt 2 mul 0.1 add
  2787.        setcachedevice
  2788.        pop begin
  2789.  
  2790.        1 2 div  0 moveto
  2791.        3 2 div  0 lineto
  2792.        2  3 sqrt 2 div lineto
  2793.        3 2 div  3 sqrt lineto
  2794.        1 2 div  3 sqrt lineto
  2795.        0  3 sqrt 2 div lineto
  2796.        closepath
  2797.  
  2798.        Linewidth pntsize div 3 sqrt 2 mul mul setlinewidth
  2799.        stroke
  2800.  
  2801.       end
  2802.      } def
  2803.    end
  2804.  
  2805.    /pntsize 1732 Frequency div def
  2806.  
  2807.    /FillFont newfont definefont pop
  2808.    /FillFont findfont pntsize scalefont setfont
  2809.  
  2810.    eoclip
  2811.    BackgroundGray 0 ge
  2812.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2813.       { newpath } ifelse
  2814.  
  2815.    ForegroundGray 100 div 1 exch sub setgray
  2816.  
  2817.    /ury Bbury pntsize add def
  2818.    Bblly pntsize ury
  2819.      { Bbllx pntsize sub 1 index moveto
  2820.        { (a) show
  2821.          currentpoint
  2822.          dup 3 index sub
  2823.          pntsize 2.1 div gt { pntsize sub } if
  2824.          1 index Bburx gt
  2825.          {pop pop pop exit} if
  2826.          moveto
  2827.        } loop
  2828.      } for
  2829.    } bind def
  2830.  
  2831. %@Fill
  2832. /Stars %Stars,4, Number:=100, Maximumásize:=300, Minimumásize:=3, Randomáseed:=0
  2833.    { srand
  2834.    /MinSize exch 1 1000 InRange def
  2835.    /MaxSize exch MinSize 1000 InRange def
  2836.    /Number exch 1 2000 InRange def
  2837.  
  2838.    /newfont 10 dict def
  2839.    newfont begin
  2840.  
  2841.    /FontMatrix [1  0  0
  2842.                 1  0  0] def
  2843.    /FontType 3 def
  2844.    /FontBBox [0 0 1 1] def
  2845.    /Encoding 256 array def
  2846.    0 1 255 {Encoding exch /.notdef put} for
  2847.  
  2848.    /BuildChar
  2849.      { 1  0
  2850.        -0.1 -0.1 1.1 1.1
  2851.        setcachedevice
  2852.        pop begin
  2853.  
  2854.        1 .5 moveto
  2855.        .5 .5 .5 0 360 arc
  2856.        fill
  2857.  
  2858.        end
  2859.      } def
  2860.    end
  2861.  
  2862.    /FillFont newfont definefont pop
  2863.    /FillFont findfont 2 scalefont setfont
  2864.  
  2865.    /dx Bburx Bbllx sub def
  2866.    /dy Bbury Bblly sub def
  2867.  
  2868.    eoclip
  2869.    0 setgray
  2870.    fill
  2871.  
  2872.    1 setgray
  2873.    /mtx matrix currentmatrix def
  2874.    dx dy mul Number mul 100000 div cvi
  2875.       { rand dx mod Bbllx add
  2876.       rand dy mod Bblly add
  2877.       moveto
  2878.       MaxSize rand  MaxSize MinSize div cvi  mod 1 add div 10 div
  2879.       dup scale
  2880.       (a) show
  2881.       mtx setmatrix
  2882.       } repeat
  2883.  
  2884.    } bind def
  2885.  
  2886. %@Fill
  2887. /StarShapes %StarShapes,5, Points:=5, Frequency:=2, Spacing:=100, Angle:=36, Gray:=100
  2888.    {
  2889.    /Grey exch 0 100 InRange def
  2890.    /Theta exch 1 90 InRange def
  2891.    /Spacing exch 1 300 InRange def
  2892.    /Frequency exch 1 25 InRange def
  2893.    /Points exch 1 15 InRange def
  2894.  
  2895.    /str 1 string def
  2896.    str 0 Points put
  2897.  
  2898.    /newfont 10 dict def
  2899.    newfont begin
  2900.  
  2901.    /FontMatrix [.001                0
  2902.                 0                   .001
  2903.                 0                   0] def
  2904.    /FontType 3 def
  2905.    /FontBBox [0 0 500 1000] def
  2906.  
  2907.    /Encoding 256 array def
  2908.    0 1 255 {Encoding exch /.notdef put} for
  2909.  
  2910.    /BuildChar
  2911.      {Spacing 100 div 500 mul  dup
  2912.       -0.1 -0.1 500.1 1000.1
  2913.       setcachedevice
  2914.       exch begin
  2915.  
  2916.       250 250 translate
  2917.       250 250 scale
  2918.       90 rotate
  2919.  
  2920.       dup
  2921.       180 exch div dup sin exch cos div
  2922.       Theta 2 div dup sin exch cos div
  2923.  
  2924.       1 0 moveto
  2925.       2 index
  2926.          {
  2927.          360 3 index div rotate
  2928.          dup dup 3 index add div
  2929.          dup 3 index mul neg
  2930.          lineto
  2931.          1 0 lineto
  2932.          } repeat
  2933.       closepath
  2934.  
  2935.       fill
  2936.       pop pop pop
  2937.  
  2938.       end
  2939.      }def
  2940.    end
  2941.  
  2942.    /pntsize 100000 Frequency div Spacing div def
  2943.  
  2944.    /FillFont newfont definefont pop
  2945.    /FillFont findfont pntsize scalefont setfont
  2946.  
  2947.    /increment Spacing 100 div pntsize mul def
  2948.  
  2949.    eoclip newpath
  2950.  
  2951.    Grey 100 div 1 exch sub setgray
  2952.    Bblly increment Bbury
  2953.      { Bbllx 1 index moveto
  2954.        { str show
  2955.          currentpoint
  2956.          dup 3 index sub
  2957.          increment 2.1 div gt { increment sub } if
  2958.          1 index Bburx gt
  2959.          {pop pop pop exit} if
  2960.          moveto
  2961.        } loop
  2962.      } for
  2963.    } bind def
  2964.  
  2965. %@Fill
  2966. /StoneWall %StoneWall,4, Frequency:=15, Maximumágray:=100, Minimumágray:=0, Lineáwidth:=5
  2967.    {
  2968.    /Linewidth exch 0 100 InRange def
  2969.    /MinGrey exch 0 100 InRange def
  2970.    /MaxGrey exch MinGrey 100 InRange def
  2971.    /Frequency exch 1 50 InRange def
  2972.  
  2973.    /DifGrey MaxGrey MinGrey sub def
  2974.    DifGrey 0 eq
  2975.       { /DifGrey 1 def
  2976.       } if
  2977.    Linewidth Frequency mul 250 div setlinewidth
  2978.    eoclip newpath
  2979.    0 srand
  2980.  
  2981.    currentscreen
  2982.    3 -1 roll
  2983.    pop 100
  2984.    3 1 roll
  2985.    setscreen
  2986.  
  2987.    /dy Bbury Bblly sub def
  2988.    /dx Bburx Bbllx sub def
  2989.    Bbllx Bbury translate
  2990.    250 Frequency div dup scale
  2991.  
  2992.    dy 920 div Frequency mul cvi {
  2993.       0 0 moveto
  2994.       /x0 0 def
  2995.       /y0 0 def
  2996.       /x1 0 def
  2997.       /y1 0 def
  2998.       /x2 0 def
  2999.       /y2 0 def
  3000.       /x3 0 def
  3001.       /y3 0 def
  3002.       0 5 dx 200 div Frequency mul
  3003.          { rand 50 mod 25 div 1 sub add
  3004.          x3 y3 moveto
  3005.          x2 y2 x1 y1 x0 y0 curveto
  3006.          dup rand 30 mod 15 div neg 2 sub
  3007.          2 copy
  3008.          /y0 exch def
  3009.          /x0 exch def
  3010.          lineto
  3011.          dup rand 50 mod 10 div 2.5 sub add rand 50 mod 10 div neg
  3012.          1 index rand 50 mod 10 div
  3013.          4 index rand 30 mod 15 div 2 add
  3014.          6 copy
  3015.          /y3 exch def
  3016.          /x3 exch def
  3017.          /y2 exch def
  3018.          /x2 exch def
  3019.          /y1 exch def
  3020.          /x1 exch def
  3021.          curveto
  3022.          pop
  3023.          closepath
  3024.          gsave
  3025.          rand DifGrey mod MinGrey add 100 div 1 exch sub setgray fill
  3026.          grestore
  3027.          0 setgray stroke
  3028.          } for
  3029.       0 -4 translate
  3030.       } repeat
  3031.    } bind def
  3032.  
  3033. %@Fill
  3034. /Text %Text,5, Font:=1, Character:=67, Frequency:=4, Spacing:=100, Backgroundágray:=0
  3035.    {
  3036.    /BackGrey exch -1 100 InRange def
  3037.    /Spacing exch 30 300 InRange def
  3038.    /Frequency exch 1 50 InRange def
  3039.    /Character exch 33 255 InRange def
  3040.    /Font exch 1 35 InRange def
  3041.  
  3042.    /pntsize 100000 Frequency div Spacing div def
  3043.    Font  1 eq { /Times-Roman } if
  3044.    Font  2 eq { /Times-Italic } if
  3045.    Font  3 eq { /Times-Bold } if
  3046.    Font  4 eq { /Times-BoldItalic } if
  3047.    Font  5 eq { /Helvetica } if
  3048.    Font  6 eq { /Helvetica-Oblique } if
  3049.    Font  7 eq { /Helvetica-Bold } if
  3050.    Font  8 eq { /Helvetica-BoldOblique } if
  3051.    Font  9 eq { /Courier } if
  3052.    Font 10 eq { /Courier-Oblique } if
  3053.    Font 11 eq { /Courier-Bold } if
  3054.    Font 12 eq { /Courier-BoldOblique } if
  3055.    Font 13 eq { /Symbol } if
  3056.    Font 14 eq { /AvantGarde-Book } if
  3057.    Font 15 eq { /AvantGarde-BookOblique } if
  3058.    Font 16 eq { /AvantGarde-Demi } if
  3059.    Font 17 eq { /AvantGarde-DemiOblique } if
  3060.    Font 18 eq { /Bookman-Demi } if
  3061.    Font 19 eq { /Bookman-DemiItalic } if
  3062.    Font 20 eq { /Bookman-Light } if
  3063.    Font 21 eq { /Bookman-LightItalic } if
  3064.    Font 22 eq { /Helvetica-Narrow } if
  3065.    Font 23 eq { /Helvetica-Narrow-Bold } if
  3066.    Font 24 eq { /Helvetica-Narrow-BoldOblique } if
  3067.    Font 25 eq { /Helvetica-Narrow-Oblique } if
  3068.    Font 26 eq { /NewCenturySchlbk-Roman } if
  3069.    Font 27 eq { /NewCenturySchlbk-Bold } if
  3070.    Font 28 eq { /NewCenturySchlbk-Italic } if
  3071.    Font 29 eq { /NewCenturySchlbk-BoldItalic } if
  3072.    Font 30 eq { /Palatino-Roman } if
  3073.    Font 31 eq { /Palatino-Bold } if
  3074.    Font 32 eq { /Palatino-Italic } if
  3075.    Font 33 eq { /Palatino-BoldItalic } if
  3076.    Font 34 eq { /ZapfChancery-MediumItalic } if
  3077.    Font 35 eq { /ZapfDingbats } if
  3078.    findfont pntsize scalefont setfont
  3079.  
  3080.    /str 1 string def
  3081.    str 0 Character put
  3082.  
  3083.    /increment Spacing 100 div pntsize mul 2 mul def
  3084.  
  3085.    eoclip
  3086.    BackGrey 0 ge
  3087.       { BackGrey 100 div 1 exch sub setgray fill }
  3088.       { newpath } ifelse
  3089.  
  3090.    /Bbury Bbury pntsize add def
  3091.  
  3092.    0 setgray
  3093.    Bblly increment Bbury
  3094.      { Bbllx 1 index moveto
  3095.        { str show
  3096.          currentpoint increment 2 div add
  3097.          dup 3 index sub
  3098.          increment 2.1 div gt { increment sub } if
  3099.          1 index Bburx gt
  3100.          {pop pop pop exit} if
  3101.          moveto
  3102.        } loop
  3103.      } for
  3104.    } bind def
  3105.  
  3106. %@Fill
  3107. /Tiles %Tiles,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  3108.    {
  3109.    /BackgroundGray exch -1 100 InRange def
  3110.    /ForegroundGray exch 0 100 InRange def
  3111.    /Linewidth      exch 0 100 InRange def
  3112.    /Frequency      exch 2 100 InRange def
  3113.  
  3114.    /newfont 10 dict def
  3115.    newfont begin
  3116.  
  3117.    /FontMatrix [1  0  0
  3118.                 1  0  0] def
  3119.    /FontType 3 def
  3120.    /FontBBox [0 0 2 1] def
  3121.    /Encoding 256 array def
  3122.    0 1 255 {Encoding exch /.notdef put} for
  3123.  
  3124.    /BuildChar
  3125.      { 2  .5
  3126.        -0.1 -0.1 2.1 1.1
  3127.        setcachedevice
  3128.        pop begin
  3129.  
  3130.        0   0 moveto
  3131.        1.5 0 lineto
  3132.        1.75  0 .25 180 90 arcn
  3133.        1.75 .5 .25 -90 90 arc
  3134.        1.75  1 .25 270 180 arcn
  3135.        0   1 lineto
  3136.  
  3137.        Linewidth pntsize div setlinewidth
  3138.        stroke
  3139.  
  3140.        end
  3141.      } def
  3142.    end
  3143.  
  3144.    /pntsize 500 Frequency div def
  3145.  
  3146.    /FillFont newfont definefont pop
  3147.    /FillFont findfont pntsize scalefont setfont
  3148.  
  3149.    eoclip
  3150.    BackgroundGray 0 ge
  3151.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3152.       { newpath } ifelse
  3153.  
  3154.    ForegroundGray 100 div 1 exch sub setgray
  3155.  
  3156.    Bblly pntsize Bbury
  3157.      { Bbllx 1 index moveto
  3158.        { (a) show
  3159.          currentpoint
  3160.          dup 3 index sub
  3161.          pntsize 2.1 div gt { pntsize sub } if
  3162.          1 index Bburx gt
  3163.          {pop pop pop exit} if
  3164.          moveto
  3165.        } loop
  3166.      } for
  3167.    } bind def
  3168.  
  3169. %@Fill
  3170. /TreeRings %TreeRings,5, Maxádistance:=150, Minádistance:=0, Lineáwidth:=5, Backgroundágray:=0, Randomáseed:=0
  3171.    { srand
  3172.    /BackGrey exch -1 100 InRange def
  3173.    /LineWidth exch 0 100 InRange def
  3174.    /MinDist exch 0 500 InRange def
  3175.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  3176.  
  3177.    eoclip
  3178.    BackGrey 0 ge
  3179.       { BackGrey 100 div 1 exch sub setgray fill }
  3180.       { newpath } ifelse
  3181.  
  3182.    /cx Bburx Bbllx add 2 div def
  3183.    /cy Bbury Bblly add 2 div def
  3184.    /pntsize MaxDist MinDist sub def
  3185.    /hyp Bburx Bbllx sub dup mul Bbury Bblly sub dup mul add sqrt def
  3186.  
  3187.    /wr 0 def
  3188.    0 setgray
  3189.    LineWidth setlinewidth
  3190.  
  3191.       {
  3192.       /wr rand pntsize mod MinDist add wr add def
  3193.       cx wr add  cy moveto
  3194.       cx cy wr 0 360 arc
  3195.       stroke
  3196.       wr hyp gt {exit} if
  3197.       } loop
  3198.    } bind def
  3199.  
  3200. %@Fill
  3201. /Triangle %Triangle,4, Frequency:=8, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0
  3202.    {
  3203.    /BackgroundGray exch -1 100 InRange def
  3204.    /ForegroundGray exch 0 100 InRange def
  3205.    /Linewidth      exch 0 100 InRange def
  3206.    /Frequency      exch 2 100 InRange def
  3207.  
  3208.    /newfont 10 dict def
  3209.    newfont begin
  3210.  
  3211.    /FontMatrix  [ 1 3 sqrt div  0
  3212.                   0             1 3 sqrt div
  3213.                   0             0] def
  3214.    /FontType 3 def
  3215.    /FontBBox [0 0 1 3 sqrt] def
  3216.    /Encoding 256 array def
  3217.    0 1 255 {Encoding exch /.notdef put} for
  3218.  
  3219.    /BuildChar
  3220.      { 1  0
  3221.        -0.1 -0.1 1.1 3 sqrt 0.1 add
  3222.        setcachedevice
  3223.        pop begin
  3224.  
  3225.        0 0 moveto
  3226.        1 3 sqrt lineto
  3227.        0 3 sqrt lineto
  3228.        1 0 lineto
  3229.        closepath
  3230.  
  3231.        0 3 sqrt 2 div moveto
  3232.        1 3 sqrt 2 div lineto
  3233.  
  3234.        Linewidth pntsize div 3 sqrt mul setlinewidth
  3235.        stroke
  3236.  
  3237.       end
  3238.      } def
  3239.    end
  3240.  
  3241.    /pntsize 1732 Frequency div def
  3242.    /FillFont newfont definefont pop
  3243.    /FillFont findfont pntsize scalefont setfont
  3244.  
  3245.    eoclip
  3246.    BackgroundGray 0 ge
  3247.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3248.       { newpath } ifelse
  3249.  
  3250.    ForegroundGray 100 div 1 exch sub setgray
  3251.  
  3252.    Bblly pntsize Bbury
  3253.      { Bbllx pntsize sub pntsize 3 sqrt div Bburx
  3254.        { 1 index moveto
  3255.        (a) show
  3256.        } for
  3257.      pop
  3258.      } for
  3259.    } bind def
  3260.  
  3261. %@Fill
  3262. /Waves %Waves,5, Frequency:=6, Lineáwidth:=5, Foregroundágray:=100, Backgroundágray:=0, Spacingá(%):=100
  3263.    {
  3264.    /Spacing        exch 30 300 InRange def
  3265.    /BackgroundGray exch -1 100 InRange def
  3266.    /ForegroundGray exch 0 100 InRange def
  3267.    /Linewidth      exch  0 100 InRange def
  3268.    /Frequency      exch  2 100 InRange def
  3269.  
  3270.    /newfont 10 dict def
  3271.    newfont begin
  3272.  
  3273.    /FontMatrix [1 84 div   0
  3274.                 0          1 84 div
  3275.                 0          0] def
  3276.    /FontType 3 def
  3277.    /FontBBox [37 56 111 114] def
  3278.    /Encoding 256 array def
  3279.    0 1 255 {Encoding exch /.notdef put} for
  3280.  
  3281.    /BuildChar
  3282.      { 74  0
  3283.        36.9 55.9 111.1 114.1
  3284.        setcachedevice
  3285.        pop begin
  3286.  
  3287.        1 1.5 scale
  3288.  
  3289.        37 38 moveto
  3290.        76 38 79 73 111 57 curveto
  3291.        80 60 80 38 111 38 curveto
  3292.  
  3293.        Linewidth pntsize div 84 mul setlinewidth
  3294.        stroke
  3295.  
  3296.       end
  3297.      } def
  3298.    end
  3299.  
  3300.    /pntsize 783 Frequency div def
  3301.  
  3302.    /FillFont newfont definefont pop
  3303.    /FillFont findfont pntsize scalefont setfont
  3304.  
  3305.    /Height pntsize Spacing 100 div mul def
  3306.  
  3307.    /Bbllx Bbllx Height sub def
  3308.    /Bblly Bblly Height sub def
  3309.    /Bburx Bburx Height add def
  3310.    /Bbury Bbury Height add def
  3311.  
  3312.    eoclip
  3313.    BackgroundGray 0 ge
  3314.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3315.       { newpath } ifelse
  3316.  
  3317.    ForegroundGray 100 div 1 exch sub setgray
  3318.    Bblly Height Bbury
  3319.      { Bbllx exch moveto
  3320.        { (a) show
  3321.          currentpoint
  3322.          pop Bburx gt
  3323.          {exit} if
  3324.        } loop
  3325.      } for
  3326.    } bind def
  3327.  
  3328. %------ Color PostScript fills added for v6.0 
  3329.  
  3330. %@Fill
  3331. /ColorBubbles %ColorBubbles,5, Numberá(sqáinch):=25, Maxásize:=300, Minásize:=10, Lineáwidth:=10, Randomáseed:=0
  3332.    { srand
  3333.    /LineWidth exch 0 50 InRange def
  3334.    /MinSize exch 1 1000 InRange def
  3335.    /MaxSize exch MinSize 1000 InRange def
  3336.    /Number exch 1 250 InRange def
  3337.  
  3338.          /SetRandomRGB
  3339.          {
  3340.             3    %put 3 random numbers between 0 and 1 on the stack
  3341.             {rand 100 mod 1 add 100 div 1 exch sub}
  3342.             repeat
  3343.              setrgbcolor
  3344.          } def
  3345.  
  3346.    eoclip
  3347.    newpath
  3348.    /pntsize MaxSize MinSize div cvi def
  3349.    /dx Bburx Bbllx sub def
  3350.    /dy Bbury Bblly sub def
  3351.  
  3352.    dx dy mul Number mul 1000000 div cvi
  3353.    {  rand dx mod Bbllx add
  3354.       rand dy mod Bblly add
  3355.       rand pntsize mod 1 add pntsize exch div MinSize mul
  3356.       3 copy
  3357.       2 index add
  3358.       exch
  3359.       moveto
  3360.       pop
  3361.       0 360 arc
  3362.       gsave
  3363.  
  3364.       SetRandomRGB
  3365.  
  3366.       LineWidth setlinewidth
  3367.       stroke
  3368.       grestore
  3369.  
  3370.       1 setgray
  3371.       fill
  3372.       } repeat
  3373.  
  3374.    } bind def
  3375.  
  3376. %@Fill
  3377. /ColorCircles %ColorCircles,4, Numberá(sqáinch):=25, Maxásize:=300, Minásize:=10, Randomáseed:=0
  3378.    { srand
  3379.    /MinSize exch 1 1000 InRange def
  3380.    /MaxSize exch MinSize 1000 InRange def
  3381.    /Number exch 1 250 InRange def
  3382.  
  3383.          /SetRandomRGB
  3384.          {
  3385.             3    %put 3 random numbers between 0 and 1 on the stack
  3386.             {rand 100 mod 1 add 100 div 1 exch sub}
  3387.             repeat
  3388.              setrgbcolor
  3389.          } def
  3390.  
  3391.    eoclip
  3392.    newpath
  3393.    /pntsize MaxSize MinSize div cvi def
  3394.    /dx Bburx Bbllx sub def
  3395.    /dy Bbury Bblly sub def
  3396.  
  3397.    dx dy mul Number mul 1000000 div cvi
  3398.    {  rand dx mod Bbllx add
  3399.       rand dy mod Bblly add
  3400.       rand pntsize mod 1 add pntsize exch div MinSize mul
  3401.       3 copy
  3402.       2 index add
  3403.       exch
  3404.       moveto
  3405.       pop
  3406.       0 360 arc
  3407.       
  3408.       SetRandomRGB
  3409.  
  3410.       fill
  3411.  
  3412.         } repeat
  3413.  
  3414.    } bind def
  3415.  
  3416. %@Fill
  3417. /ColorCrosshatching %ColorCrosshatching,5, Maxádistance:=75, Minádistance:=0, Lineáwidth:=5, Angle:=45, Randomáseed:=0
  3418.    { srand
  3419.    /Angle exch -180 180 InRange def
  3420.    /LineWidth exch 0 100 InRange def
  3421.    /MinDist exch 0 500 InRange def
  3422.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  3423.  
  3424.          /SetRandomRGB
  3425.          {
  3426.             3    %put 3 random numbers between 0 and 1 on the stack
  3427.             {rand 100 mod 1 add 100 div 1 exch sub}
  3428.             repeat
  3429.              setrgbcolor
  3430.          } def
  3431.  
  3432.    eoclip
  3433.    newpath
  3434.  
  3435.    /pntsize MaxDist MinDist sub def
  3436.    /dx2 Bburx Bbllx sub 2 div def
  3437.    /dy2 Bbury Bblly sub 2 div def
  3438.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  3439.  
  3440.    Bbllx Bblly translate
  3441.    dx2 dy2 translate
  3442.    Angle rotate
  3443.    LineWidth setlinewidth
  3444.  
  3445.    /wd hyp2 neg def
  3446.       { /wd rand pntsize mod MinDist add wd add def
  3447.       wd hyp2 neg moveto
  3448.       wd hyp2 lineto
  3449.  
  3450.             SetRandomRGB
  3451.             stroke
  3452.  
  3453.       wd hyp2 gt {exit} if
  3454.       } loop
  3455.  
  3456.    Angle -2 mul rotate
  3457.    /wd hyp2 neg def
  3458.       { /wd rand pntsize mod MinDist add wd add def
  3459.       wd hyp2 neg moveto
  3460.       wd hyp2 lineto
  3461.  
  3462.             SetRandomRGB
  3463.             stroke
  3464.  
  3465.       wd hyp2 gt {exit} if
  3466.       } loop
  3467.  
  3468.    } bind def
  3469.  
  3470. %@Fill
  3471. /ColorFishscale %ColorFishscale,3, Frequency:=8, Lineáwidth:=5, Backgroundágray:=0
  3472.    {
  3473.    /BackgroundGray exch -1 100 InRange def
  3474.    /Linewidth      exch 0 100 InRange def
  3475.    /Frequency      exch 2 100 InRange def
  3476.  
  3477.          /SetRandomRGB
  3478.          {
  3479.             3    %put 3 random numbers between 0 and 1 on the stack
  3480.             {rand 100 mod 1 add 100 div 1 exch sub}
  3481.             repeat
  3482.              setrgbcolor
  3483.          } def
  3484.  
  3485.    /newfont 10 dict def
  3486.    newfont begin
  3487.  
  3488.    /FontMatrix [1  0  0
  3489.                 1  0  0] def
  3490.    /FontType 3 def
  3491.    /FontBBox [0 0 1 1] def
  3492.    /Encoding 256 array def
  3493.    0 1 255 {Encoding exch /.notdef put} for
  3494.  
  3495.    /BuildChar
  3496.      { 1  0
  3497.        0 0 1 1
  3498.        setcachedevice
  3499.        pop begin
  3500.  
  3501.        0.5 0.5 0.5 360 180 arcn
  3502.        0 1 0.5 270 360 arc
  3503.        1 1 0.5 180 270 arc
  3504.  
  3505.        Linewidth pntsize div setlinewidth
  3506.        stroke
  3507.  
  3508.       end
  3509.      } def
  3510.    end
  3511.  
  3512.    /pntsize 1000 Frequency div def
  3513.    /FillFont newfont definefont pop
  3514.    /FillFont findfont pntsize scalefont setfont
  3515.  
  3516.    eoclip
  3517.    BackgroundGray 0 ge
  3518.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3519.       { newpath } ifelse
  3520.  
  3521.     Bblly pntsize Bbury
  3522.       { Bbllx exch moveto
  3523.         {
  3524.                   SetRandomRGB
  3525.                     
  3526.                     (a) show
  3527.           currentpoint
  3528.           pop Bburx gt
  3529.           {exit} if
  3530.         } loop
  3531.       } for
  3532.     } bind def
  3533.  
  3534. %@Fill
  3535. /GreenGrass %GreenGrass,5, Number:=100, Maximumásize:=35, Minimumásize:=7, Gray:=0, Randomáseed:=0
  3536.     { srand
  3537.     /Grey exch -1 100 InRange def
  3538.     /MinSize exch 1 100 InRange def
  3539.     /MaxSize exch MinSize 100 InRange MinSize wDstChck def
  3540.     /Number exch 1 500 InRange def
  3541.  
  3542.     eoclip
  3543.     Grey 0 ge
  3544.        { Grey 100 div 1 exch sub setgray fill }
  3545.        { newpath } ifelse
  3546.  
  3547.     /Bbllx Bbllx MaxSize sub def
  3548.     /Bblly Bblly MaxSize sub def
  3549.  
  3550.     /dx Bburx Bbllx sub def
  3551.     /dy Bbury Bblly sub def
  3552.     /dSize MaxSize MinSize sub def
  3553.  
  3554.     dx dy mul 1000000 div Number mul cvi
  3555.        {
  3556.  
  3557.        matrix currentmatrix
  3558.  
  3559.        rand dx mod Bbllx add
  3560.        rand dy mod Bblly add
  3561.        translate
  3562.  
  3563.        rand dSize mod MinSize add
  3564.        dup scale
  3565.  
  3566.        -0.5 0 moveto
  3567.        rand 14 mod 7 sub
  3568.        -0.5 3  2 index 3 div 0.3 sub 10  4 index 10 curveto
  3569.        3 div 0.3 add 10 0.5 3 0.5 0 curveto
  3570.              closepath
  3571.  
  3572.        gsave
  3573.              0                                                                            %0 red
  3574.              rand 100 mod 1 add 100 div 1 exch sub    %random green
  3575.              dup 0.7 lt {pop 0.7} if                                 %above .7
  3576.              0                                                                            %0 blue
  3577.               setrgbcolor
  3578.        fill
  3579.        grestore
  3580.  
  3581.        0.1 setlinewidth
  3582.        0 setgray
  3583.        stroke
  3584.  
  3585.        setmatrix
  3586.  
  3587.        } repeat
  3588.  
  3589.      } bind def
  3590.  
  3591. %@Fill
  3592. /ColorHatching %ColorHatching,5, Maxádistance:=75, Minádistance:=0, Lineáwidth:=5, Angle:=45, Randomáseed:=0
  3593.    { srand
  3594.    /Angle exch -180 180 InRange def
  3595.    /LineWidth exch 0 100 InRange def
  3596.    /MinDist exch 0 500 InRange def
  3597.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  3598.  
  3599.      /SetRandomRGB
  3600.      {
  3601.          3    %put 3 random numbers between 0 and 1 on the stack
  3602.          {rand 100 mod 1 add 100 div 1 exch sub}
  3603.          repeat
  3604.          setrgbcolor
  3605.      } def
  3606.  
  3607.    eoclip
  3608.    newpath
  3609.  
  3610.    /pntsize MaxDist MinDist sub def
  3611.    /dx2 Bburx Bbllx sub 2 div def
  3612.    /dy2 Bbury Bblly sub 2 div def
  3613.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  3614.  
  3615.    Bbllx Bblly translate
  3616.    dx2 dy2 translate
  3617.    Angle rotate
  3618.    LineWidth setlinewidth
  3619.  
  3620.    /wd hyp2 neg def
  3621.  
  3622.       { /wd rand pntsize mod MinDist add wd add def
  3623.       wd hyp2 neg moveto
  3624.       wd hyp2 lineto
  3625.  
  3626.             SetRandomRGB
  3627.  
  3628.       stroke
  3629.       wd hyp2 gt {exit} if
  3630.       } loop
  3631.  
  3632.    } bind def
  3633.  
  3634. %@Fill
  3635. /GreenLeaves %GreenLeaves,5, Numberá(sqáinch):=50, Maximumágreen:=100, Minimumágreen:=70, Maximumásize:=100, Minimumásize:=10
  3636.    {
  3637.    /MinSize exch 1 200 InRange def
  3638.    /MaxSize exch MinSize 200 InRange MinSize wDstChck def
  3639.    /MinGreen exch 0 100 InRange def
  3640.    /MaxGreen exch MinGreen 100 InRange def
  3641.    /Number exch 1 250 InRange def
  3642.  
  3643.    eoclip newpath
  3644.    currentscreen
  3645.    3 -1 roll
  3646.    pop 90
  3647.    3 1 roll
  3648.    setscreen
  3649.  
  3650.    /dx Bburx Bbllx sub def
  3651.    /dy Bbury Bblly sub def
  3652.  
  3653.    dx dy mul Number mul 1000000 div cvi
  3654.       {
  3655.       matrix currentmatrix
  3656.  
  3657.       rand dx mod Bbllx add
  3658.       rand dy mod Bblly add
  3659.       translate
  3660.  
  3661.       rand 360 mod
  3662.       rotate
  3663.  
  3664.       MaxSize MinSize eq
  3665.         { Maxsize 10.8 div }
  3666.         { rand MaxSize MinSize sub mod MinSize add 10.8 div } ifelse
  3667.       dup scale
  3668.  
  3669.       17 0 moveto
  3670.       65 -18 106 -13 125 0 curveto
  3671.       106 13  65  18  17 0 curveto
  3672.       gsave
  3673.             0    % 0 red
  3674.       MaxGreen MinGreen eq
  3675.         { MaxGreen 100 div }
  3676.         { rand MaxGreen MinGreen sub mod MinGreen add 100 div } ifelse
  3677.             0 % 0 blue
  3678.       setrgbcolor
  3679.       fill
  3680.       grestore
  3681.       0.3 setlinewidth
  3682.       0 setgray
  3683.       stroke
  3684.  
  3685.       setmatrix
  3686.  
  3687.       } repeat
  3688.  
  3689.    } bind def
  3690.  
  3691. %@Fill
  3692. /ColorLeaves %ColorLeaves,3, Numberá(sqáinch):=50, Maximumásize:=100, Minimumásize:=10
  3693.    {
  3694.    /MinSize exch 1 200 InRange def
  3695.    /MaxSize exch MinSize 200 InRange MinSize wDstChck def
  3696.    /Number exch 1 250 InRange def
  3697.  
  3698.          /SetRandomRGB
  3699.          {
  3700.             3    %put 3 random numbers between 0 and 1 on the stack
  3701.             {rand 100 mod 1 add 100 div 1 exch sub}
  3702.             repeat
  3703.              setrgbcolor
  3704.          } def
  3705.  
  3706.    eoclip newpath
  3707.    currentscreen
  3708.    3 -1 roll
  3709.    pop 90
  3710.    3 1 roll
  3711.    setscreen
  3712.  
  3713.    /dx Bburx Bbllx sub def
  3714.    /dy Bbury Bblly sub def
  3715.  
  3716.    dx dy mul Number mul 1000000 div cvi
  3717.       {
  3718.       matrix currentmatrix
  3719.  
  3720.       rand dx mod Bbllx add
  3721.       rand dy mod Bblly add
  3722.       translate
  3723.  
  3724.       rand 360 mod
  3725.       rotate
  3726.  
  3727.       MaxSize MinSize eq
  3728.         { Maxsize 10.8 div }
  3729.         { rand MaxSize MinSize sub mod MinSize add 10.8 div } ifelse
  3730.       dup scale
  3731.  
  3732.       17 0 moveto
  3733.       65 -18 106 -13 125 0 curveto
  3734.       106 13  65  18  17 0 curveto
  3735.       gsave
  3736.  
  3737.       SetRandomRGB
  3738.  
  3739.       fill
  3740.       grestore
  3741.       0.3 setlinewidth
  3742.       0 setgray
  3743.       stroke
  3744.  
  3745.       setmatrix
  3746.  
  3747.       } repeat
  3748.  
  3749.    } bind def
  3750.  
  3751. %@Fill
  3752. /ColorReptiles %ColorReptiles,2, Frequency:=4, Lineáwidth:=8
  3753. {
  3754.   /LineWidth exch 0 250 InRange def
  3755.   /Frequency exch 1 100 InRange def
  3756.  
  3757.     /SetRandomRGB
  3758.     {
  3759.         3    %put 3 random numbers between 0 and 1 on the stack
  3760.         {rand 100 mod 1 add 100 div 1 exch sub}
  3761.         repeat
  3762.         setrgbcolor
  3763.     } def
  3764.  
  3765.   /newfont 10 dict def
  3766.   newfont begin
  3767.  
  3768.   /FontMatrix [2 7 div             0
  3769.                0                   2 7 div
  3770.                0                   0] def
  3771.   /FontType 3 def
  3772.   /FontBBox [-1.73 -1.86 2.36 2.0] def
  3773.   /Encoding 256 array def
  3774.   0 1 255 {Encoding exch /.notdef put} for
  3775.   Encoding 97 /ReptilesStroked put
  3776.   Encoding 98 /ReptileFilled put
  3777.  
  3778.   /CharProcs 3 dict def
  3779.   CharProcs begin
  3780.   /.notdef {} def
  3781.   /ReptilesStroked
  3782.   {
  3783.     %3 sqrt  3 2 div  translate
  3784.  
  3785.     3 sqrt 2 div  1 2 div  moveto
  3786.     3
  3787.     {
  3788.       120 rotate
  3789.  
  3790.       0     0    moveto
  3791.       0.32 -0.40 lineto
  3792.       0.32 -0.48 lineto
  3793.       0    -0.72 lineto
  3794.  
  3795.       0.05 -1.03 moveto
  3796.       0.4  -0.76 lineto
  3797.       0.84 -0.84 lineto
  3798.       0.5  -0.96 lineto
  3799.       0.31 -1.18 lineto
  3800.  
  3801.       0.87 -1.5  moveto
  3802.       0.58 -1.28 lineto
  3803.       0.8  -1.14 lineto
  3804.       0.94 -1.18 lineto
  3805.       1.24 -1.08 lineto
  3806.       1.42 -1.18 lineto
  3807.  
  3808.       1.68 -1.02 moveto
  3809.       1.52 -0.84 lineto
  3810.       1.64 -0.66 lineto
  3811.       1.73 -0.36 lineto
  3812.  
  3813.       1.73  0    moveto
  3814.       1.41 -0.26 lineto
  3815.       1.32 -0.49 lineto
  3816.       1.06 -0.24 lineto
  3817.       1.42  0.18 lineto
  3818.  
  3819.       0.87  0.57 moveto
  3820.       0.87  0.26 lineto
  3821.       0.99  0.26 lineto
  3822.       1.05  0.12 lineto
  3823.       0.82 -0.07 lineto
  3824.       0.68 -0.07 lineto
  3825.       0.62  0.36 lineto
  3826.  
  3827.  
  3828.       3 sqrt 2 div  1 2 div moveto
  3829.  
  3830.     } repeat
  3831.  
  3832.     LineWidth Pointsize div 7 2 div mul setlinewidth
  3833.     stroke
  3834.  
  3835.   } def
  3836.   /ReptileFilled
  3837.   {
  3838.     0     0    moveto
  3839.     0.32 -0.40 lineto
  3840.     0.32 -0.48 lineto
  3841.     0    -0.72 lineto
  3842.  
  3843.    -0.40 -0.55 lineto
  3844.    -0.47 -0.68 lineto
  3845.    -0.42 -0.97 lineto
  3846.    -0.27 -0.99 lineto
  3847.    -0.21 -0.88 lineto
  3848.  
  3849.     0.05 -1.03 lineto
  3850.     0.4  -0.76 lineto
  3851.     0.84 -0.84 lineto
  3852.     0.5  -0.96 lineto
  3853.     0.31 -1.18 lineto
  3854.  
  3855.     0.32 -1.39 lineto
  3856.     0.55 -1.60 lineto
  3857.     0.59 -1.74 lineto
  3858.     0.82 -1.86 lineto
  3859.  
  3860.     0.87 -1.5  lineto
  3861.     0.58 -1.28 lineto
  3862.     0.8  -1.14 lineto
  3863.     0.94 -1.18 lineto
  3864.     1.24 -1.08 lineto
  3865.     1.42 -1.18 lineto
  3866.     1.52 -1.45 lineto
  3867.     1.45 -1.81 lineto
  3868.     1.74 -1.47 lineto
  3869.     1.68 -1.02 lineto
  3870.     1.52 -0.84 lineto
  3871.     1.64 -0.66 lineto
  3872.     1.73 -0.36 lineto
  3873.     2.28 -0.46 lineto
  3874.     2.36 -0.11 lineto
  3875.     2.12 -0.15 lineto
  3876.     1.73  0    lineto
  3877.     1.41 -0.26 lineto
  3878.     1.32 -0.49 lineto
  3879.     1.06 -0.24 lineto
  3880.     1.42  0.18 lineto
  3881.     1.21  0.41 lineto
  3882.     1.11  0.60 lineto
  3883.  
  3884.     0.87  0.57 lineto
  3885.     0.87  0.26 lineto
  3886.     0.99  0.26 lineto
  3887.     1.05  0.12 lineto
  3888.     0.82 -0.07 lineto
  3889.     0.68 -0.07 lineto
  3890.     0.62  0.36 lineto
  3891.     0.26  0.52 lineto
  3892.     0.19  0.48 lineto
  3893.     closepath
  3894.     fill
  3895.   } def
  3896.   end
  3897.  
  3898.   /BuildChar
  3899.   {
  3900.     3 sqrt 3 mul 2 div  3 2 div
  3901.     -1.83 -1.96 2.46 2.1
  3902.     setcachedevice
  3903.     exch begin
  3904.     Encoding exch get
  3905.     CharProcs exch get
  3906.     end
  3907.     exec
  3908.   } def
  3909.   end
  3910.  
  3911.   /Pointsize 2000 Frequency div def
  3912.  
  3913.   /FillFont newfont definefont pop
  3914.   /FillFont findfont Pointsize scalefont setfont
  3915.  
  3916.   /pntsize Pointsize 6 mul 7 div def
  3917.   /HeightDiff Pointsize 2 mul 7 div .49 mul def
  3918.  
  3919.   eoclip newpath
  3920.  
  3921.   currentscreen
  3922.   3 -1 roll
  3923.   pop 120
  3924.   3 1 roll
  3925.   setscreen
  3926.  
  3927.   Bblly pntsize Bbury pntsize add HeightDiff add
  3928.   {
  3929.     Bbllx 1 index moveto
  3930.     {
  3931.       currentpoint
  3932.       1 index exch
  3933.  
  3934.       2 copy 2 copy translate
  3935.       240 rotate
  3936.       
  3937.             SetRandomRGB
  3938.             (b) show
  3939.  
  3940.       0 0 moveto
  3941.       -240 rotate
  3942.       neg exch neg exch translate
  3943.  
  3944.       2 copy translate
  3945.       120 rotate
  3946.       
  3947.             SetRandomRGB
  3948.             (b) show
  3949.       
  3950.             0 0 moveto
  3951.       -120 rotate
  3952.       neg exch neg exch translate
  3953.  
  3954.             SetRandomRGB
  3955.       (b) show
  3956.  
  3957.       currentpoint
  3958.       dup 4 index sub
  3959.       pntsize 2.1 div gt { pntsize sub } if
  3960.       3 -1 roll Bburx gt
  3961.       {pop pop pop exit} if
  3962.       moveto
  3963.     } loop
  3964.   } for
  3965.  
  3966.   LineWidth 0 gt
  3967.   {
  3968.     0 setgray
  3969.     Bblly pntsize Bbury pntsize add
  3970.     {
  3971.       Bbllx 1 index moveto
  3972.       {
  3973.         (a) show
  3974.         currentpoint
  3975.         dup 3 index sub
  3976.         pntsize 2.1 div gt { pntsize sub } if
  3977.         1 index Bburx gt
  3978.         {pop pop pop exit} if
  3979.         moveto
  3980.       } loop
  3981.     } for
  3982.   } if
  3983. } bind def
  3984.  
  3985. %@Fill
  3986. /StainedGlass %StainedGlass,2, Frequency:=15, Lineáwidth:=5
  3987.    {
  3988.    /Linewidth exch 0 100 InRange def
  3989.    /Frequency exch 1 50 InRange def
  3990.  
  3991.      /SetRandomRGB
  3992.      {
  3993.          3    %put 3 randoms number between 0 and 1 on the stack
  3994.          {rand 100 mod 1 add 100 div 1 exch sub}
  3995.          repeat
  3996.         setrgbcolor
  3997.      } def
  3998.  
  3999.    Linewidth Frequency mul 250 div setlinewidth
  4000.    eoclip newpath
  4001.    0 srand
  4002.  
  4003.    currentscreen
  4004.    3 -1 roll
  4005.    pop 100
  4006.    3 1 roll
  4007.    setscreen
  4008.  
  4009.    /dy Bbury Bblly sub def
  4010.    /dx Bburx Bbllx sub def
  4011.    Bbllx Bbury translate
  4012.    250 Frequency div dup scale
  4013.  
  4014.    dy 920 div Frequency mul cvi {
  4015.       0 0 moveto
  4016.       /x0 0 def
  4017.       /y0 0 def
  4018.       /x1 0 def
  4019.       /y1 0 def
  4020.       /x2 0 def
  4021.       /y2 0 def
  4022.       /x3 0 def
  4023.       /y3 0 def
  4024.       0 5 dx 200 div Frequency mul
  4025.          { rand 50 mod 25 div 1 sub add
  4026.          x3 y3 moveto
  4027.          x2 y2 x1 y1 x0 y0 curveto
  4028.          dup rand 30 mod 15 div neg 2 sub
  4029.          2 copy
  4030.          /y0 exch def
  4031.          /x0 exch def
  4032.          lineto
  4033.          dup rand 50 mod 10 div 2.5 sub add rand 50 mod 10 div neg
  4034.          1 index rand 50 mod 10 div
  4035.          4 index rand 30 mod 15 div 2 add
  4036.          6 copy
  4037.          /y3 exch def
  4038.          /x3 exch def
  4039.          /y2 exch def
  4040.          /x2 exch def
  4041.          /y1 exch def
  4042.          /x1 exch def
  4043.          curveto
  4044.          pop
  4045.          closepath
  4046.          
  4047.                  gsave
  4048.                  SetRandomRGB
  4049.                  fill
  4050.          grestore
  4051.  
  4052.          0 setgray stroke
  4053.          } for
  4054.       0 -4 translate
  4055.       } repeat
  4056.    } bind def
  4057.