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