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