home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2000 February / PCpro_2000_02.ISO / TRIALS / corel / Custom / userproc.ps < prev   
Encoding:
Text File  |  1999-03-02  |  95.6 KB  |  4,136 lines

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